What's happening is that the PointerOver visual state for the button overrides the button's background removing your image background.
<VisualState x:Name="PointerOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Border" Storyboard.TargetProperty="Background">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPointerOverBackgroundThemeBrush}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPointerOverForegroundThemeBrush}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
One solution is the long way much like unica suggested which is to override the control template for the button and remove the storyboard that changes the background.
The simpler way is to make the button have some content which contains the background. Something along the lines of"
videoButton.Content = new Border
{
Background = new ImageBrush
{
ImageSource = new BitmapImage(new Uri("http://www." + link + ".jpg"))
}
};