The Particles object is fully timedelta-compatible, but you're not using it, you're spawning objects manually. This means you have to do the timedelta stuff yourself.
Always - create/spawn object is not framerate independent. As the name suggests, "Always" runs every tick, and at 5000fps, this is 5000 times per second, and at 60fps, that's 60 times per second. So if you always create an object, at 5000fps you're creating 5000 objects, etc.
You should probably just use the particles object - otherwise you need to use timedelta to work out how many objects to create this tick (timedelta * objects_per_second) and you'll have rounding errors unless you also save the fractional part of that expression and add it to the next tick's count...