You should be able to make GRVT last forever by setting life to 0. It has PROP_LIFE_KILL_DEC set instead of PROP_LIFE_KILL, which means it is deleted when life decreases from 1 to 0, and not when life is already 0.
To duplicate GRVT, you'd probably have to rewrite the GRVT update function in Lua, and also give the particles a non-zero tmp value and a random initial velocity on creation.