3 weeks of vacation at 10 years is nothing, FYI. A lot of places start people at 3 weeks these days or they do unlimited. I’d suggest reconsidering adding more vacation at these milestones. Alternatives could be profit-sharing or equity or significant raises.
Training. You’ve got a motivated and engaged employee willing to go the extra mile for you. You pinpoint where her skills are weak, and you develop her. You give her honest feedback about where she’s screwing up, narrow her job duties, and ask her to stick to her defined duties until you feel she has mastered them. As she masters skills, gradually add more responsibilities.
This is a management failure. Stop letting her run around like a bull in a China closet and manage her. If you find that she doesn’t want to be trained or managed, and she may not since you’ve let it go on for so long, you may have to let her go.