What you described is a very customized application. I don’t know if there is any controller out there that can do what you described, because it’s really specialized.
If you have programming skills, this is actually fairly easy to implement. OpenSprinkler already supports 2 independent master zones, and it would be fairly easy to extend it to 4 so that each can control an independent water source. But if you don’t have programming skills, you will have to hire someone to modify the source code for you.