You can take over the draw sequence by chopping up the sync() process into Update() Render() Swap()
You can draw directly into the back buffer yourself using DrawSprite() and other commands.
I've made UI objects such as what I think you are doing and it's still better to make some functions to work with sprites and such. It's easier to control and read what's interacted with - drawing blindly into the backbuffer means you can't get clicks and mouse-overs etc. as easily.
For instance, you wouldn't need to make 100's of sprites. A box may just need 1 corner and 1 continuous edge piece which you resize and the corners are rotated. Same with buttons. I made some nice gel buttons with a left and right rounded end and a stretchable centre part. You'll need to invest a bit of time, but with UDTs you can make some very tidy looking UI objects which are all reusable and highly flexible.
This would be the sensible way to approach it. The buttons and controls would want to be made in such a way as to be reusable in many ways.
A typical button might have a few or many properties, depending on how ornate your UI is going to be:
Type tButton
LeftEdgeID as Integer // sprite ID for the left edge
RightEdgeID as Integer // sprite for the right edge
BodyID as Integer // a stretchable central section
Width as Integer
Height as Integer
TextID as Integer
PosX# as Float
PosY# as Float
Color as tColor (defined separately)
PressType as Integer // toggle, stay down/up etc.
EndType
I'm not sure if anyone has released a UI suite for AppGameKit, but if not, I bet people would be happy to see one!
For instance, using atlases, you could have an actual button in the image and define the left and right edges as per the example button.