I realize that the system has similarities. What I believe is novel is the (snipped) "nomination" system based on the hash of the block, the need for the nominated MNs to respond with blockchain-writable transactions within 2 blocks of being nominated, and the deterministic picking of a "winner" based on the responding MNs. This negates the need to maintain an off-blockchain "list" of active MNs, which I believe is what caused the forking problems in previous releases, where some nodes were rejecting blocks off of a belief that the MN receiving payment was not a valid MN, for whatever reason. You can see this in all the questions about "is my MN appearing ok?" It should not be possible for one person's list of active MNs to be different than another person's, yet I believe that this is what we still have today. "I'm seeing 850 active MNs but Joe sees 842" is a very difficult problem to solve, so my proposal moves all MN "activeness" into the blockchain where it becomes indisputable.
When MN payments were first introduced, forking occurred as the network propagation process could take longer than the blocktime. Since then the inter-MN comms are *much* faster.
If I see 850 active MNs, you and Joe also see 850, any change is propagated within seconds at most. There will always be fringe cases, but that's what the voting system across multiple blocks is is for.
It's critical for future services that MN's maintain comms discrete from the slow blocktime.