Mathcad supports different units in a solve block Find() statement (see attached), however, it appears that the ability falls apart when you are using a solve block to define a function. My guess is that the solve block is returning an internal array, and Mathcad can't assign the result to your result because of the different units.
My work-around is to strip the units out of the variables in the Find() statement. In doing so, you have to make sure you are using appropriate units inside the solve block.
Attached is my work-around (go to the bottom of the worksheet). It shows the expected result. Because of back-puressure, flow from a "real" pump is less than a pump with 100% efficiency. Consequently, with lower pump output, system pressure is lower than theoretical.
It's "clunky", but it seems to do the trick. If someone has an alternate solution, I'd be curious.