As a simple example, the Jimmy John's sandwich chain had a no-compete for their employees. Do you think the average person making subs is as comfortable walking away from a job as the company is telling them the terms aren't negotiable?
My favorite fix would simply to be requiring full compensation for the entire term. Intel would pay an architect to sit on the beach rather than work for AMD but nobody would think of trying that for the average developer.