What I find the most difficult, by far, is "coaching up". Coaching down and motivating junior and intermediate developers comes easy by leveraging the inherent mutual respect that craftspeople have for expert colleagues who are fair and supportive. But coaching up is really hard. Because it often requires convincing superiors with less technical understanding and experience in building teams.
In contract world, it is easier to be accountable for the Whole Project™ because that's how liability works and we have full power to get it done. As an employee who might have to report to nascent technical and product managers, that initiative can be perceived as stepping on toes, and can invite being thrown under the bus for their mistakes. I don't have a solution, but any company that can solve this issue and is good on the other material benefits should have no problem retaining talent IMHO.