I’ve switched over to only private and/or paid relays and don’t experience any spam whatsoever. Not that this is the best solution to spam, but it has been effective.
I host my own relay and it's stupid easy to set up. The problem then becomes relay discovery, which is an almost completely unsolved problem. I do think it will get there in though.
Check out the gossip client [0]. They take a unique stab at dealing with relay discovery. NIP-65 [1] also attempts to deal with this. Hopefully clients will start implementing this shortly.