They're about encouraging employers to make the investment in a new employee, knowing the time and effort put into that person isn't going to be easily transferred to a competitor.
That said, you can negotiate a non-compete, either doing away with it completely, or changing the terms.
Non-competes generally have at least three limiting features: industry, time, and region.
You can negotiate on the industry side: from "same industry" to "company's direct competitors".
You can negotiate on the region:"the Northeast" to "New England" to "metro Boston".
And you can negotiate on the time: twelve months, to six, to three.
I've just thought of this, but I think it would be fair it limit the non-competes based on the time worked in a position in a company. Less than one month and more than five years in a position, the non-compete clause goes away. Or the terms change.