That's the way to do it! Choose the witnesses that offer the best security, and the best created value for the whole platform. That's how we ensure success of the system.
Interesting point regarding hiding the voters. That's something done in many ballot systems in the real world, so that there is no way to prove you voted in a certain way. However, I am not sure it would be possible on a blockchain, since the entire point of a blockchain is the trust-free ability to prove ownership with your keys. If you can prove you made a transaction, you could then prove to the person that you voted for, that you voted for them, and ask them for your reward. But if there is a way to hide it, that would be cool!
i get your piont