You should consider the tradeoffs though - if you have large maps and want to use only one sprite per type to render everything, you're going to need to set all of its necessary data for ever time when you render the Sprite. This can cost a lot of performance, especially when you need to set more than just position (for example rotation, scale, subrect, etc.).
So you'll have to think about what you want: Maximum runtime performance or minimum memory requirement. Sprites will cause a overhead in memory, but it really isn't that much. One Sprite in memory will maybe be something like 400-500 or so bytes big, so 1000 tiles would just create an overhead of about 50kB, which is absolutely nothing in todays terms.
On the other hand, a couple of function calls almost won't cost any performance on today's CPUs either, especially with the kinds of optimizations which compilers are able to perform today. But I'd still take more memory over less performance.