I don't think there is any reason for noncompetes. They won't pay me if one makes me unemployable. They should be generally disallowed. They only help companies restrict their employee's mobility.
I guess you could get a job in the non-compete window, but only be trained by the next employer while the previous one paid. That seems complicated and silly though.
The answer is the same.
On the other hand I have no idea how to deal with a situation where a small tech company develops some highly specialised expertise in house only to have all their employees poached over night by a far bigger competitor that can pay them a salary or signing bonus that would be uneconomical for the smaller company to match.
How would you discourage this kind of hostile takeover?