People have been loyal, but they have been paid back with lay offs, either the company goes belly up, or people/projects get cut. Once it happens to you once, you don't do that mistake again. If you see the 'shitty times' ahead sign, some people will leave, and for good reason.
Want to keep them around? Give them an incentive to do so, more equity, more responsibility/better tittle, and promise higher pay when things get better.
But a lot of companies just don't do it, and expect blind obedience. Also they turn blind eye when shitty managers ruin teams, and take action only after half of the team has left already. First guys out of the door are always the good ones.
If a candidate tells you: 'I left company x, b/c my manager was a dickhead, and that I'd rather work somewhere for good people, then compromise my dignity and integrity just to make a manager look good', means that guy actually has a backbone. A weak person will bend and please his manager, even though what the manager is demanding might be damaging to the company on the long run (you see this often in tech. companies).
My experience as a Gen Y, when I started my first job (2002), as an intern, i saw 3 out of 8 team members get laid off. One guy had be there for 2 years, one 6 and one 14! That's a good lesson you get for life. A lot of people that started their careers between 99-2003 saw this first hand. Sorry, but loyalty goes so far.
Expect the average person to stay 1-4 years in one place, with the 3 year mark the good time to find a new job. Any more than that, then they probably have no ambition, unless they are moving really high up in the ranks.
Fair, but I wouldn't advise anyone, under any circumstances, to badmouth an ex-boss at any stage of the job search process. It's one of the most common interview fuckups.