I know I am a little late to the party, haven't been visiting as much as I used to. However, I wasn't sure if you ever fixed your problem.
If I understand what your original question was, it would be that as you were on the treeviewitem the link would show but as soon as you moved to click on the link, the link would disappear.
I have created something similar in a project of mine. I think your trigger is set up correctly, however, I think it is your actual template that might be causing the problem.
I created a Grid much like yours, but instead of breaking it down in to columns I used a stack panel and set the orientation to horizontal. I think this makes the entire item one control instead of seeing two different entities inside of a grid. This allows for me to scroll over to my buttons without losing the trigger of the IsMouseOver.
as it stands
<MyButtonControl x:Name=Buttons Visibility="Hidden">
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Buttons" Property="Visibility" Value="Visible"/>
As I pointed out we have set up the trigger the same, but my TreeviewItem.ItemTemplate was a little different than yours and this seems to work for me nicely. Hope it helps! Again, I know I'm a month late, but if this didn't help you, maybe it helps someone. Cheers.