I do what Matty H mentions, creating scenes. I have a library of resources which the scenes utilise, it's all driven by arrays which manage what is contained within the scene. A screen can contain multiple scenes.
I also use
collections and
groups for associated buttons, images etc. For example, a score display might be a
group of 5 images (99999). Health might be 3 images (Read/Amber/Green). The two together form a HUD which is contained in a
collection. I can then control individual sprites, groups or collections. Again, it's all done with arrays.
I've gone further to add effects to groups. For example, the 5 score sprites may appear with a 100ms delay between sprites. When it changes, the sprites expand by 10% and then shrink back.
The only way to achieve this level of control is to write it yourself.
Most importantly, these are all self-contained source files and functions. When I create a new project, I drop the files in and my Sprite control system is ready to use.
With the new arrays in types, this kind of stuff will be many times easier.