Alpha blending in a 3D environment can be a tricky issue. Shawn Hargreaves wrote an article several years ago that touches on most of the major issues (the section titled Painter's Algorithm deals with your question specifically). Long story short: there exists no technique to do what you want perfectly, so the question becomes: what trade-offs are you willing to make?
Doing alpha testing rather than alpha blending may be the simplest solution. It's a binary test, where an opaque pixel either appears or doesn't, so the order in which those pixels are drawn is largely irrelevant. This will give you hard edges, but it can still look pretty good if your textures have enough resolution; I know World of Warcraft uses this technique, and I'm pretty 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.