I'm in agreement with the mob here. Maybe I'm just misunderstanding the mechanics of it, but a third layer in the cake doesn't seem a good idea just to achieve even distribution.
Are these ubernodes running the same code as other MNs? What actually differentiates them? Why cannot plain old MNs serve the same function either via mass consensus or via a limited random selection to act as ubernodes for that block or n blocks?
Uber nodes run the exact same software with a special private key that enables them to sign messages that tell the network who to pay. Without the central authority, miners can pay whoever they want as the payee. The masternodes can't function as the authority, because they could exploit the code and fork the network.
It doesn't have to be this way forever, it's just a good solution to support the growth of the network. I think the best overall solution is the voting mechanism that was blockchain based (RC3). To fix that system requires that we update all miners software (CPU, GPU, etc), all stratum pools and all daemons. But it would be completely decentralized and pretty much perfect.
Here's my stab at a possible solution. Please feel free to rip it apart.
1) from blockchain: during daemon startup, walk last 4000 blocks, collect paid masternode addresses.
2) from network: collate all masternode addresses from peers into array 'mnlist'
3) prune masternode addresses having been paid within length(mnlist) blocks
4) prune masternode addresses with 1k deposits newer than length(mnlist) from array. (i.e. 3000 active masternodes requires 3000 confirmations to receive payments.)
5) array now contains nodes due for payment.
6) sort array by address.
7) pay top address
8) GOTO 2
This will create a deterministic payout list all masternodes can confirm with their peers before accepting.
This assumes masternode addresses (mnlist contents) are valid/validated and that we haven't yet grown past 4000 masternodes. (step one would be adjusted accordingly.)
tl;dr: use the historical blockchain payments to prevent dupes, filter out the too-new, alpha sort the to-be-paid and pay the top address.
How does a masternode get paid the first time?
If you use the masternode list, they aren't always in sync between clients. So if a payee is on the list in one client, but not in another the network will fork.
How does that ensure the masternodes port is open and doing the service properly?