Is it correct to say that rounds are needed as nonces: to cancel previous prevotes so they are not reused later to create a deadlock? If so, why not just use timestamp()/blocktime as an always increasing round.
Normally blocks are uniquely referred as block_number + round. Block_number is needed because round is normally just 0.
But with timestamp()/blocktime you could set some syncronization epoch (~ equal actual blocktime) so when GST happens everyone would give same number, and it’s always different.
Not saying that it’s any better way, just seems easier to implement than resetting round counter every time.