NGUI doesn't use Unity's batching system. It does batching itself automatically.
Dynamic fonts break up batching, so if you have this:
Sprite (depth 0)
Label (depth 1)
Sprite (depth 2)
Label (depth 3)
...you will have 4 draw calls because it's the only way to render everything properly. Instead you should be organizing your UI like this:
Sprite (depth 0)
Sprite (depth 1)
Label (depth 2)
Label (depth 3)
This will result in 2 draw calls because sprites will be batched with sprites and labels will be batched with labels.
If you stop using Unity's dynamic fonts and instead use atlas fonts, as recommended by NGUI's labels, you will draw the entire UI in 1 draw call and the depth order won't matter, making your job easier.