I also wanted to do this so I tried converting the particle material to a particle shader and editing the shader. I haven't done anything with shaders before so this might not be proper but it is what I have so far.
In order to spread the particles out evenly the shader would have to know the amount of particles. This doesn't seem to be available in the vertex buffer (?) so I resorted to passing the shader a uniform value
uniform float initial_particle_amount; // added this
but I have to set that value manually or with a script.
Then I replaced the line
float angle1_rad = rand_from_seed_m1_p1(alt_seed) * spread_rad;
with
float angle1_rad = (float(INDEX) * (spread_rad / (initial_particle_amount / 2.0)));
and that emitted the particles in and even spread.
I noticed there is a initialanglerandom value but I don't understand what it does. Ideally we would be able to set a value between 0 and 1 to control the "randomness" of the particle spread.