Performance improvements...I don't see much room for that, to be honest. Have you profiled your app? Are you sure that improving blitting performance would actually help?
About the shader issue: Yes, that's caused by batching. You can break batching by inserting some small, transparent blit with another texture here and there but that would actually reduce performance even more (not the dummy blit itself, but the interrupted batch).
So the need for more performance and the option to be more flexible with the uniforms are actually conflicting wishes here...