I don't see a problem with just setting their depth when you create it. That seems like the most efficient way of going about it, I have had much success doing it this way for my mobile games. Creating a new UIPanel for each is a big no no since the draw calls will start to add up quickly depending on how many popups are going on, it would destroy FPS on mobiles.
Everytime you make a new popup just set it like: (Reference to the HUDText Sprite/Text).depth = DrawCallQueue();
You could just toss this in a static class for global reference.
int mDrawCall = 0; //Start Depth Value public int DrawCallQueue { get { mDrawcall++; return mDrawCall; } }