If you randomly select a new delegate each round then a delegate can take over all block production if the get two back to back slots by mining their secret.
Yes, you're right. Delegate can generate bunch of secrets and pick one which is appropriate to make him next one. Then we may still need more than 1 delegate in 1 round but the next delegate will still be decided based on this block's random. Let's say 50 delegates in 1 round and each delegate can produce only 1 block in 1 round. We can achieve this by excluding delegates who have already produced blocks in this round in next delegate choosing.
I really like this adjustment.... the primary challenge is deciding who goes next in the event of a missed block. You would have to "shuffle all remaining delegates". Then what happens when the "short list" of delegates are all inactive.
Start out with 100 delegates...
Shuffle the top 100
Produce a block, the delegate that produced the block goes to the end.
Shuffle the top 99
Produce a block, the delegate that produced the block goes to the end.
Shuffle the top 98
Produce a block, the delegate that produced the block goes to the end.
Shuffle the top 97
...
Shuffle the top 1
Produce a block, the delegate that produced the block goes to the end.
Shuffle the top 100
This would prevent a delegate from controlling everything while still keeping things random.
However you still have the probability that 2 delegates can collude to "always win".
If "by chance" they see their two delegates back to back they can place a winning transaction.
Your security is always going to be proportional to the number of individuals required to collude and what your tolerance is for that.