Do you have a specific reason to use depth buffer for 2D rendering? It is slower than normal and regarding your problem it would be easily solved with drawing order. When depth buffer is disabled, what sprite is drawn last will show on top of others. You can disable the buffer on the fly too to draw just that 1 sprite on top of others.
glDisable(GL_DEPTH_TEST)