I just store the position of every moving entity 60 times per seoncd, and just playback that buffer. Not very elegant but it works suprisingly perfomantly.
Nice! I guess that does make sense since that's 600 vector2s, and with a float being 4 bytes that's only 4.8Kb per object, not really all that much data to store if my math is right. Really interesting mechanic!