We have another user with multi water source set up like yours but it applies to all zones, not some i.e. he uses either city water or pond water for all of the zones. If we implement master valve at the zones then it won't work in this scenario. That is why we think master valve at the program is more flexible.
For your case, you would create 2 programs, one for city with the zones that are fed by city water only and the other program for all zones that are fed by other source.