The most basic, fundamental way to stop spam is to stop it from being profitable. Spammers don't spam for fun (in the vast majority of cases at least), they do it for profit, and when it increases that means it's becoming more profitable.
If effective spam blocking features were implemented at the UI level, then users wouldn't see the spam and then wouldn't do whatever the spam is asking them to do, which would make it not profitable to spam and it would mostly go away.