I assume each sprite is moved on the CPU and the position data is passed to the GPU for rendering.
Curious how you are passing the data to the GPU - are you having a single dynamic vertex buffer that is uploaded each frame?
Is the vertex data a single position and the GPU is generating the quad from this?