Any chance you would be able to give me some advice on how to "craft the logic" to do such a thing? 
Kinda hard to say without seeing your program. The key thing is that $EthIOMaster.Error will be on any time there is an error in a remote I/O slave. When the error resolves, that bit will clear.
One way to handle this would be to drive all physical outputs into intermediate locations rather than drive the Ys directly. Use a MAPIO instruction to drive the physical I/O with the intermediate value. When there is an I/O error, disable the MAPIO instruction and use a second rung to drive your outputs off, essentially mimicing program mode. Indirection between the outputs the program drives and the physical I/O point also provides other benefits like allowing you to bypass a point, or easily move a point to a different physical location, or to easily force a point, so it's not a bad method to use regardless.
Another approach would be to use an ENDC (a conditional END) instruction at the top of each code block to easily bypass all logic that you don't want to run.
A complete implementation would probably use a combination of the two approaches.