Problem is if the particles are being killed off randomly
This should never happen. They should have a constant lifetime, and should always be in a regular cycle. You should have an array for each particles "lifetime". You can add a "hidden" array to hide particles (like turning the emitter on and off), but they should keep cycling, even if they are not visible. If a particle is hidden you can skip everything except the life/time updating.