You generally don't want to use depth testing with 2D due to the transparency problem. The most common solution for rendering transparent stuff with a depth buffer (regardless of 2D or 3D) is to disable depth writes and sort your objects. If you only need additive blending you don't need to sort your objects, but this is rarely the case.
What if I have two seperate lists:
1. Sprites that only have pixels with alpha 1 or alpha 0 or Sprites that are supposed to be rendered with additive blending,
2. Sprites that have pixels with other alpha values between 1 and 0.
Now, all sprites have some kind of "layer" variable, or in other words: A Z-position.
I don't need to sort list 1. I can simply render it non-sorted with additive blending, alpha test and depth testing enabled.
I sort list 2, then render it with normal blending and depth testing disabled.
Transparency should work and everything should be faster, no?