With vertex fetch, you can actually do this in the shader (although, as Shawn says, it's complex).
You can also take advantage of the fact that pure additive, or pure multiplicative, blending is order independent. Thus, if you formulate your smoke as multiplication, order doesn't matter. Make a white texture with a vaguely grey cloud in the middle for your particle. Then set blending to DSTCOLOR, ZERO. This will make all smoke draw order independent.
However: Once you add different kinds of particles (additive, or blended) to the same scene, you will get ordering problems between the two. Thus, in reality you have these options:
1) Make all particle systems multiplicative (OK for military style games when it's mostly smoke and dust)
2) Make all particle systems additive (OK for RPG style games where it's mostly magic effects)
3) Sort each emitter by distance to camera (means higher render cost, but works better)
In general, you almost never want particles to use alpha blending, though. You either want multiplication, or addition, or in some cases, pre-multiplied alpha (which is kind-of a mix of the two).
Jon Watte, Direct3D MVP
Tweets, occasionallykW X-port 3ds Max .X exporter
kW Animation source code