My structure is the following:
1 Sprite for the player (invisible, used only for collision) + 1 Sprite for the player's animations
(since the player will have a lot of sprites + skins I will use a different sprite from the other objects)
1 Sprite for the objects in the game and for enemies (invisible, used only for collision) + 1 Sprite for animations
1 Sprite for the level's layout
1 Sprite for the onscreen buttons/gamepad
1 Sprite for HUD and other elements
1 Sprite for the elements in the Main Menu
While I still use several sprites for the animations, I grouped them and pick them using a variable named "ID".
Just to make sure, draw calls are made every tick, not just only when a sprite changes frame/animation ?