Using every tick or 0.01 seconds or w/e doesn't spawn particles fast enough to make a seamless trail. I use the loop (which also moves the beam for pixel-perfect collisions) to spawn the particles at a very high rate and that's where the problem lies. For the record they are destroyed shortly after so there's never more than ~20 particles per beam.
I tried giving each beam a variable that is subtracted by n*dt and creates a particle / resets itself each time it goes below 0. It helps but I still get about twice the particles at 0.1 time scale..