Alpha blending in a 3D environment can be a difficult problem. A few years ago, Sean Hargreaves wrote an article article covering most of the main issues (a section called Animal Algorithm (your question specifically). In short: there is no technique to do what you want perfectly, so the question is: what compromises are you willing to make?
Performing alpha testing, rather than alpha mixing, may be the easiest solution. This is a binary test in which an opaque pixel appears or not, so the order in which these pixels are drawn does not really matter. This will give you hard edges, but it can still look pretty good if your textures have sufficient resolution; I know that World of Warcraft uses this technique, and I'm sure I remember seeing it in Diablo III.
You can use the built-in AlphaTestEffect to do this, or implement it yourself in a pixel shader.
source share