Trying to stop self-voting directly this way is, I think, ultimately ineffective. Anyone can just make another account, and upvote from that account instead. Or, if they don't want to wait for powering down, they can post from the new account, and upvote from the old account. Further, people can just trade votes anyway.
Incidentally, I think the biggest abuse of rewards that I am curently seeing is the "BookingTeam Mafia" in Trending every day. It wouldn't surprise me to find many more groups like this, either. They just repost spam links and paper-junk-mail peppered with links to their website, then upvote themselves $1000 per post.
Well, that is what it was when I wrote this article on it 16 days ago:
Anyway, I wrote another article more recently speaking to your second option, which I think is the effective route. I proposed a separate down-vote power, or a 1 (or more) free 100)% downvotes per day for each user. I was hoping that if we could remove the economic disincentive from "wasting" one's voting power on downvotes that the community would be drastically more inclined to police this, and they would have the benefit of subjectivity. It's harder to program a rule to find what I noted in my article above than it is for us to see it.