It is trivial to use a single pass element (in this case, the IRF520 MOSFET) in a power supply with adjustable voltage and current. All you need is a diode.
The voltage regulator needs to be able to drive the gate by adding or removing charge, or in other words, driving the gate with more or less voltage, depending on what is needed to maintain voltage regulation.
The current regulator, on the other hand, is one way: it only ever reduces the current. Increasing the current would require forcing the voltage higher given a fixed load, and then you lose voltage regulation. The voltage regulator sets the 'maximum' voltage, but the current regulator only cares when or if the current exceeds a set maximum. In every possible situation, it only ever needs to do one thing: reduce the voltage, which ultimately reduces the current. So it only needs to pull down the voltage. Never to force it up.
So use a diode. Put one in series with the current regulator's output. Use series resistors (that depend on the op amps and their current and power ratings) such that the current regulator can always sink away more current than the voltage regulator can source, and that will ensure the current regulator can always over-power the voltage regulator's wishes when it needs to, but is unable to force the voltage higher (which would require the current regulator to source current, which the diode prevents).
Something like this:
This is just one of many ways to do it. Another option would be to use a BJT rather than a MOSFET as your pass element, and drive it's base using a constant current source. Put diodes on both the voltage regulator and current regulator, and they need only sink more or less current away from the base to drive the voltage higher or lower. In this way, the current regulator doesn't even need to overpower the voltage regulator, as neither can source current, and so either regulator only needs to be able to sink away the same maximum current as the constant current source can provide.
This is just off the top of my head, there are probably a dozen other ways of achieving this. Another popular way is to use the current regulator to servo the input voltage of the voltage regulator, so it regulates current by lowering the voltage the voltage regulator is trying to produce. You seem overly fixated on the one part of this that isn't a problem and has many different solutions, all of which work. There is nothing odd or difficult about using one pass element.
There is no physical law that says thou shalt only have one control loop driving the gate of a transistor.
Now, this is why your circuit will definitely never work.
I hate to be the bearer of bad news, but there's the rub. I don't have time to critique your entire circuit, but here are the obvious fatal flaws that will prevent it from ever working:
1. You must drive an N-channel MOSFET gate with several volts, usually 5-10V above the source voltage. This means your op amp must output 30V if you to get 20V output. If you're powering your op amp from a 12V rail, you only get a few volts maximum output from the IRF520. It needs 5V higher than the source voltage to conduct 1A, and it will drop 50V doing it. You don't have 50V, so it will take even more voltage to turn it on sufficiently. You seem to think the drop out in voltage regulators has to do with the pass element. It doesn't. MOSFETs are resistive in their saturation region, so its a very low value resistor. At 2A, assuming it is given 10V above the source at it's gate, it will have 270mΩ resistance, so will drop 540mV.
The drop out in linear regulators is from the error amplifier (op amp), not the pass element. If you connect the op amp directly to the input voltage rail, which is 22V, then it will only be able to swing within a couple volts or so of this, and that is where your drop out comes from. Of course, that's if you were using a BJT. Since you're using a MOSFET, your drop out is basically a minimum of 10V. So you need to power your op amp with 10V above the maximum output voltage, or 30V, to achieve your desired voltage range. There is no trick to get around this. You will still need to power the op amp from the input rail with a couple of volts extra if you use a BJT. Also, there are many things that are needed to ensure stable op amp operation, but a constant voltage rail is not one of them. If it was, 3 terminal linear regulators couldn't exist.
2. Op amps do not like capacitive loads. In other words, they do not like things like MOSFET gates being attached to their outputs. The gate of a MOSFET is a capacitor, and charging it is what turns the FET on and off. Now, fortunately, you've picked a relatively low gate-capacitance FET, which is good. But you will still need to perform significant frequency compensation to ensure your op amps are stable under all load conditions. In other words, you need to know how to make bode plots, figure out the phase margin, know what the words zero and pole mean, and generally be comfortable doing frequency domain analysis of your circuit. Until you do, you will not be able to produce a working, stable lab power supply except perhaps accidentally. And even then, you'll never know if it is stable, you'll just know a subset of loads that won't make it oscillate or overshoot (and probably destroying whatever is connected to it).
But, you did say this was so you could learn right? Well, a lab power supply is a fantastic way to learn about everything I just mentioned. As long as that sounds like the things you want to spend your time learning (and they're all very useful in my opinion), then do not give up! Just don't expect to build this and have it actually work soon or without a fair bit more learning and work.
3. You cannot regulate down to 0V without a negative voltage source, or virtual ground. Which is kind of the same thing anyway.
No voltage regulator can regulate down to 0V without some sort of negative voltage source to suck out the bias current. For a regulator to regulate, current must flow, and there is no current flowing at 0V. This is shear physics. If you want 0V, you need a negative voltage rail. End of story. And no, the LT3083 is no more immune to this requirement than anything else. From page 11 of the LT3083 datasheet:
So, you're going to need to rethink your voltage rail strategy for your op amps for starters. But that's the easy part. Especially regulating to 0V. Just power the negative power pin of the op amp from a couple volts below ground, and it'll have no problem swinging to 0V, and it will be able to regulate to 0V. No other changes needed. You do not need symmetric power rails or anything. Op amps to not know or care what arbitrary potential you've decided to call ground. Op amps gonna op-amp (yes, I'm using op-amp as a verb) no matter how they're powered. Unless they're powered from a potential wider than their voltage range, then op amps gonna explode. But otherwise, they're gonna op-amp.
Anyway, keep at it - this is actually a terrific way to learn a great deal about the analog side of electronics. Please don't be daunted, this is a good project and you'll be glad for it in the future if you stick with it to its conclusion. Do future you a solid and keep working towards this goal, even if it is further away than you were hoping!
Best Answer
Designing switching regulator is not trivial task, especially if efficiency is important.
If you want to achieve your goal fast and cheap, I would suggest to you to buy already available modules, that are able to step down voltages to 5 and 3,3V. You can order such modules with maximum current of 300mA for around 50cents.
You can focus on circut for battery voltage detection. Simple voltage divider on base of NPN transistor, which will cut off power to step down module would be simplest solution. For more complex/efficient ways to cut off power to module, consult Mr. Google, he has plenty of knowledge on this topic. For example this is one of fancy solutions.