That might be okay for a software engineer who can likely find a different offer somewhere else without much trouble, but that's not going to be realistic for everybody.
That is a good strategy, but it will just cause unemployment to rise.
Though, I wouldn't mind keeping my own "non-termination agreement" on hand so that if I am asked to sign a non-compete, I can ask them to sign my contract too.
After all, if they think it's fair that I shouldn't be able to work for another company doing the same thing, it should be equally fair that they can't replace me with another worker doing the same thing.
So yeah, I'll sign your non-compete, so long as you agree that you cannot terminate me without invalidating it.
Some workers will switch to the competing firm, causing pay disparity within that firm, which in turn might cause decreased worker productivity or brain drain.