Well then, it's no longer the 'simple' formula you proposed.
why not? just ignore the values? just add a ( x >= y) before the average.
I believe that would require depth sorting. But it's the best I've heard so far, actually.
No, it would not require depth sorting. It does not matter in which order the values are added before the averaging of the non zero values. This is no different than the MAX(x,y) function, it does not matter in which order you find the MAX of a list of numbers, you will still find the same maximum number.
As for accessing the colour information, I don't know how the engine processes and renders explosions and cannot comment on it. But algorithmically MAX(x, y) and average_non_zero both on about the same level, except average_non_zero would require keeping track of both the zero values and the total values for the average.
It would be a good idea to use proper alpha value from the texel, this would allow smooth gradient from invisible to visible.
The problem with custom blending is that no hardware supports it, so it must be made with couple of tricks.
Easiest might be rendering explosions into a different buffer and composite later with the image.
Finding MAX should be possible by writing the explosion brightness into a Z-Buffer and right color would be the last visible. (if one needs blending between explosions, sort particles and render them as feathered particles.)
Write alpha into texture. (how you blend here affects the transparency of explosion, not color.)
Now we have color and alpha and transparent buffer ready to be composited to a final image. (before post processing.)