I think loyalty is something earned. I think we should model jobs more like relationships, value has to be given on each side of the equation. If your not treating the girl well, she leaves. You don't go in saying, baby if you date me you have to be here for the next 2 years even if I start beating you.
But a girl who has been changing boyfriends like her clothes in the past is more likely to do so in the future. Maybe that's because she doesn't fullfill her side of the equation in general.
I've heard similar advice about hiring people who are obviously over-qualified and will probably leave in 6 months. You have to use them not as workers, but as trainers and inspiration beacons for the rest of the team.
disclaimer I'm a Job hopper ;)