Okay, apparently I was calculating the FPS wrong. I finally fixed it and can get 2500 sprites, along with collision detection on all of them, running at 30 FPS.