Sort:  

They're still written on chain, but through custom json

But your point stands that they don't have to be written on chain

I don't think it's trivially easy to create a vote selling service with very far reach yet have the voting accounts themselves be difficult to detect. Although it may be pretty easy to hide payments that track individual posts. So you can likely scrutinized accounts of known vote sellers for a while at least and downvote their votes on low quality content.

Ultimately, we'll have to move to a culture where people need to feel comfortable downvoting and getting downvoted due to reward disagreement. It'll never feel great getting downvoted, but there doesn't need to be drama each time.

That will never happen. You are not going to magically change the way humans react to downvotes/dislikes. When rewards are involved it is even less possible.

It is an action that people will continue to find insulting and aggressive. It will simply never take place that everyone will just be fine with downvotes, not unless Steem stops receiving new users and maintains only a static number of accustomed voters.