The root problem here is nodes not part of the cluster getting resets from linux hosts. I'm not a low level scsi expert, but once we had a problem that resulted in resets being sent and causing issues, and I think I remember hearing that they affect the entire zone. Meaning everything that can "see" the initiator will be told to reset.
It's nondisruptive to change from your zoning setup to a more optimal one where each zone contains a single initiator and a single target. Also, you mentioned "hard" zoning- did you mean that literally, like your zones have physical port locations in them?