Would using XoutMUX as an input for another chip cause this problem? Because I thought you can use the output from any chip as an input so long as it wasn't the final "out".
That is correct, you can have an internal wire connected to multiple inputs.
I suspect that you have a typo in a name or some other syntax error and that the line nummber in the error message is wrong. Things to try:
Move only the "Mux16(a = x, b = false, sel = zx, out = XoutMux);" line to somewhere later in the file and see if the error line number moves accordingly. (Part line order is irrelevant.)
Rename "xOutMux" in this line only to something that you know isn't used anywhere else and see if the name in the error message changes. (I like to use "foo" for this experiment.)
Rename the other "xOutMux" usages one at a time and see when the error message changes.
Check that you haven't broken your Mux16.hdl if it's in the same directory as your ALU. Rename it to MyMux16.hdl so that the simulator uses the built in Mux16.
You can e-mail me your ALU if you get too frustrated.