sound like a case of distributed computing, map and reduce.
may be out of the steps which you mentioned, you could check which step is most time consuming.
If the number of candidates in the election are less and the voters are more, i am guessing the slow part will be iterating the hash and not the adding to sorted set.
If you want to calculate the results after the voting is over and not even try to partially calculate the results beforehand, and intend to use redis, i think you could try to have multiple redis instances and kind of evenly distribute the votes, and the calculation.
Finally when you calculate the votes separately on separate nodes, you could add them to one single sorted set.
This will distribute the calculation and only non-distributed part could be addition to the sorted set.
Also, use sorted set only if you intend to sort all the records. If you need to get only the top few items, do something which can be done in linear time.
May be i am just rambling here... :)