As for the first idea (opening a GUI while another GUI is still open) this is probably making-your-own-gui-system-from-start-to-finish (like a game within a game) kinda hard. Intensive use of a tickhandler, making your own mouse listener, catching packets if you want to pass items between the two GUIs, then saving data somehow when your own GUI closes...
The second idea would require keeping a copy of the original GUI, closing it, opening a combined GUI with the copy as an argument, so it can build it again and add more. Making this copy (the only hard step, as everything else can be handled by vanilla Minecraft) may require reflection, bytecode manipulation...this is on advanced-object-handling level, i think.