Who gets to vote? Can't I just make lots of cheap nodes. Operate them honestly so that they are in everyone's good books and then abuse their voting power to double-spend. Swap IP addresses, rinse, and repeat.
True.
Maybe only the last x miners with differen prog_ids are able to vote.
E.g.: If the last miners were:
Block n-5: A SatoshiClient 0.7
Block n-4: B XClient
Block n-3: C YClient
Block n-2: A SatoshiClient 0.7
Block n-1: C YClient
Then a miner working on block n collects votes only from A,B,C.