1) Moving between Valve projects may be like a "market" where the "buzz" around a project is like its "price"... but then the analogy breaks down, because in a real market, you'd have to pay to be on the hot team.
But at Valve you don't, so in this case, why doesn't everyone just drop their project and move to the hottest, most interesting team? Obviously in real life not everyone will, but if a team only needs 5 people, and 50 people want to join, who determines who really joins? Well, the project manager will have to choose, and now we're just back to managers choosing. Or am I missing something?
2) There's a lot of grunt work in software development. Bugfixes to maintain a year-old product, writing documentation, etc. If nobody wants to do the grunt work, then who does it? Because there's usually more grunt work than people who want to do it. Everyone wants to work on the new exciting sexy stuff, but that's not always what generates revenue and pays people's salaries.