The fundamental problem in your example has nothing to do with hiring. It's that Mary is working on something that she dislikes to the point that having to continue on her project in the medium term will cause her to quit. It's both the company and the employee's joint responsibility to ensure that this isn't the case.
I'd argue that it has everything to do with poor hiring practices :-) I should have made it clearer that at (a) you have a happy, but overloaded employee.
By hiring somebody else, and by not thinking it through what that person should do in the context of the current workforce, a happy employee becomes an unhappy one.
Before they hired Bob - before they even start looking for a Bob - they should have had a good idea what "Bob" would be doing, how that's going to fit in with what Mary's doing now, and that everybody is happy with that.
Nobody went in with the idea that "Mary will get the dull stuff and Bob will get the neat stuff" since that's obviously a dumb decision. But because nobody had articulated what exactly Bob should be doing, and how that may or may interact with Mary's role, bad things happened.
If they'd thought about it, written a job spec, and talked to Mary some of these issues would have come up. They would have probably figured out that "We need another Mary" wasn't what they actually needed. When a company is growing "another Mary" is almost always the wrong thing to ask for - since as the company grows roles change.
By looking to define the role they would have found out that Mary does Q, W, X, Y, & Z. She's not very hot at Q since it's not a core skill, but she's really passionate about X, Y and Z, and W needs to get done and she's happy to do it. So maybe what the company needs is for Mary to focus on X, Y & Z, and get somebody else who's good at Q and W... or two different people who are good at Q and W.... or some other option.
Hiring is exactly what makes this happen - and I've seen it more than once.