Current path based on voltage level
Here's one option among many. Arbitrarily decide that the threshold between the two supplies is 7V. Configure a comparator with inputs of a common 2.5V reference like the micropower, fixed LM4040; and a divider from 7V to 2.5V. If you designate the output of the comparator to be the 9V-active circuit, when it is low, U50 gate is activated and VL50 is high. Conversely when the 9V-active load is high, U50 will be disabled. Ensure that U1 is rail-to-rail.



simulate this circuit &ndash; Schematic created using CircuitLab
Another option that's less precise but also fairly simple:



simulate this circuit
That relies on knowledge of a stable Vgsth for your MOSFETs which may not be practical if you have tight specifications. Ideal FETs will produce something like this, with three regions:

In the first region, the gate voltage is insufficient to turn on either FET. In the second region (2.5-7V), the 5V circuit is active, and in the third region (7V+) the 9V circuit is active. If the supply is weak or the current draw is huge, you might see oscillatory behaviour where the 9V circuit load pulls the supply down below 7V, the circuit is disabled, the supply jumps back up and so on.
If you want to be more responsible and add some noise immunity, separate the 5V and 9V sections into two Schmitt triggers. The circuit I've shown below has hysteresis to:

turn the 5V section on if the voltage decreases below 5.5V
turn the 5V section off if the voltage increases above 6V
turn the 9V section on if the voltage increases above 8V
turn the 9V section off if the voltage decreases below 7V

These thresholds can be adjusted by modifying the resistors around the two op-amps. With the example op-amp, these are two halves of one 1A-out NCV0372.



simulate this circuit
In simulation this produces, over one triangular cycle of the input voltage,