I find creating/deleting sprites constantly to be something I reserve for dynamic gameplay elements... stuff that moves, that needs collision. When it comes to tilemaps, menus, windows and other general static stuff I prefer to keep the sprite alive and just set it to visible when I need to call DrawSprite. And for good measure I also move it off screen and disable it between usage. Since you're probably going to end up hiding the drawing stuff away in a custom function it's no biggie to start and end these drawing functions with SetSpriteVisible, SetSpritePosition, and SetSpriteActive.
Another, perhaps smarter way to look at it, is your intended platform of distribution. If you're going to run your app on a big box, nobody cares. If you're going to run on mobile and tablets, then it's good practice to adopt a programming style that takes battery life into consideration. File access, constantly moving large memory blocks, etc etc... Basically ALL code sucks battery life, but some code is worse. If you need to create and delete sprites on every frame because it's the logical way to structure your code for the app you're making, then so be it. But if you're creating and deleting tons of sprites every frame for no apparent reason, then all you're doing is giving yourself a lot more work in the long run, and an app that kills batteries faster than you can say applealreadykilledmybatterywhentheyreleaseanewversionofiossowhyshouldIcareanyways.