After reading Yann Guidon's notes about ALU design and reading Warren Toomey's ALU tutorial here: http://www.csc.villanova.edu/~mdamian/Past/csc2400fa13/assign/ALU.html
I took those ideas and I am testing this in my current CPU layout in Logisim.
The add/subtract unit is how Yann described, using an adder's Carry In and a XOR gate to do subtraction:
OK, briefly about the ALU. I was starting to get too obsessed and distracted with it, I wanted more functions so I've kind of compromised:
But, importantly it IS operationally compatible with the optimised one I had. So if I want to do the ALU at a lower level, the control line is still there to do the combined Add/Subtract circuit with the XOR. Also it doesn't affect any the instruction set or internal microcoding.