There are 2 hacks I can think of with which you can acheive this.
You can create an alpha-blended 'mask particle system' for every additive particle system you create. Render the mask particle system first and then on top of it, render the actual one. This way all the particles in the paricle system will be 'guarded' by the consistent underlying alpha blended particle from the variable backgorund.
If you use unity's built-in particle system to create particles then you'll have to make sure that there isn't much randomness in the particle. Otherwise the mask will not be much identical to the real one and will create some 'unguarded' areas.
If you are using your own particle system then for every particle in the system you'll have to create an identical particle in the 'mask-particle-system' which will follow the exact path of its corresponding real-particle. Then, render the mask-system and then the real one.
The mask-particle-system should preferably use the full-black version of the particle texture.
Fire particle

Fire particle mask
You'll have to adjust the sorting layer order of the particle objects. This can done attaching the following script to all the particle systems. Set the layerOrder
of mask system as 1 and that of real one as 2.
`public int layerOrder;
void Start () {
ParticleSystem particleSys = GetComponent<ParticleSystem>();
Renderer renderer = particleSys.GetComponent<Renderer>();
renderer.sortingOrder = layerOrder;
}`
This is what I acheived this way.
No mask

With mask

- The second method is to use a separate camera for rendering the particle systems. Anything that needs to be drawn over the fire particles also need to be rendered by this new camera. Things might get tricky this way. You might not be able to easily and properly position stuff rendered by the new camera in respective to the ones rendered by the older one.
Both of these methods will have their impact on performance. You'll have to choose the one which best suits your needs