After all, for high enough salaries, I'd probably agree to very onerous terms.
Specfically about your list, I think the reason the period doesn't usually start from the end of training, but rather the end of employment, is that it is assumed you continue to have access to more training / more confidential information, even if you work for a company for longer than the few months of training. And I certainly hope most people work in a job in which they continue to grow/learn.
As for voiding if the contract if the employee is fired, why make that a condition? Wouldn't that just mean the bar for hiring new employees would be even higher, because if they don't work out, you're both wasting lots of investment, and also running the risk of them taking your methods to a new company?