Well you can animate a texture in two different ways:
1) All your animation frames stored in a single texture. That means you create a plane, use PaintEntity() to texture that plane with your texture and write a shader that changes the UV coordinates of your plane every now and then, so it only displays a single frame of your animation.
2) All your animation frames stored as seperate textures. Also make a plane and use PaintEntity() to texture it with the first animation frame. After a certain time you call PaintEntity() again, but this time you load the next frame of your animation. That goes on until your animation is finished.
From what i read, the second approach seems to be much faster.
Edit:
The spinning crosshair could be done using a plane with a crosshair texture and alphablending. All you need to do is to rotate the plane slowly over time. That way there would be no need for multiple textures and it would be faster and less memory consuming.