I don't think it's fair to make contributors assign copyright to me, especially if they are major.
I'd probably just keep a private fork from before their contributions, and, if for whatever reason my employer is GPL averse, that's their problem, and they can pay to reimplement anything they need from after that point.
Edit:
Perhaps a fair way to do it would be to say that contributors who agree to the CLA are also assigned rights to the whole code base, with the restriction of only being able to redistribute it wholesale as GPL. Similar to the way commercial sound and video clip libraries are licensed, you are allowed to redistribute it as part of another work in whatever license you like, but wholesale redistribution is only allowed under the GPL. That would give the same advantages as a more permissive license, but reduce the freerider problem to some extent.
From a practical point of view, it's complicated to dual license their code to the employer. If the employer refuses to license it, then the employee has to find the job which lets him license it (if he wishes to use it). That may be difficult.
In other words, if you have software as property, the idea "I want to work on the same code base in the future for a living" may contradict with someone else's idea "I am paying for it therefore you do what I want". In theoretical free market this should work out, but in reality there is a lot of frictions.