The more time I spend in this game dev world the more I realise there is really no best way to do anything.
As long as what you are doing is reasonably performant / effecient and it works then go with it.
As well as layers or layouts you could also create/spawn the menu items when you need them then destroy when done. Or you could have them ready off screen then move into position as needed. You could do visible invisable with activated deactivated code. Or any or all of the above together .
To add. The most important thing is whatever way you choose you should be comfortable with the method, and it should be as adaptable , changeable, and reusable as possible.
I will close with the caveat that I've never made a full menu system yet so it is highly likely that I haven't a clue what I'm talking about.