Incorrect, because every fork can pick up this transaction in its next CB. The evil fork has to broadcast the CB else the fork doesn't exist in public view.
This can be made impossible by spending the money on this wallet and not including this transaction. On block N the attacker broadcasts a transaction which spends all money from his wallet, but doesn't include it in his CB, using 1 CB "grace" period. On block N+1 he announces and includes 10 transactions involving money on the same wallet. The honest guys can't include them since they already confirmed the money spent, and the bad guy wins by 9 transactions. If you didn't observe this happening and you just see the blocks, you can never tell whose version is honest.
It does nothing to solve the 51% attack with signing of the CB. Signing of the CB is necessary to decide the order of peers who can sign TBs.
Imagine the CB is signed continuously, with every TB. There is no way to withhold a TB and announce it later: this would create a discontinuity easily observable, and the attacker will have to deny his own signatures. There is no way to drop TBs: everyone knows it has just arrived and the evil guy has it, so if he ignored it it's a fraud.
We are walking in circles going no where. The 51% attack can not be avoided by any decentralized design.
Then you'll have to explain how the attack works, under the new set of assumptions, namely: the broadcast delivery is guaranteed in bounded time and everyone is constantly online. Or wait for the system to be implemented and try to implement the attack. At this point I don't see such an attack.