Turns out I had a massive issue with my GPUParticles - I was using some simple meshes like spheres, but far too many segments. I tuned that down and went from 11M primitives in the frame to ~600k (~95% reduction). Hopefully that makes things much smoother!