What if the blockchain tracks votes and linearly decreases the reward based on repeat votes. So if bob votes for bill/or self votes once, he gets 100% of reward. If he votes twice in the same payout window, 80%. Etc. And to discourage repeat votes, the same linear decrease in VP still applies. This would effectively make it so that people can still choose to self vote 10 times a day. But a $100 vote would only be worth 10c by the end of the week. And the reward pool would be distributed among smaller voters too.
ps. none of this is mathematically correct, but im sure you get the gist of it