First, is loading all those images really a problem. 1000 images of 16 by 16 pixels are 256000 pixels. Even when using 4 bytes for each pixel would result in just one MB of image data, which isn't much.
If you really want/need to reduce the number of images you load into memory, you could only load the visual tiles/images needed for your map into memory, and a few more to increase responsiveness for your game.
For example if your game shows a map of n
by m
tiles, you could load a n+2
by m+2
tiles into memory, or visually represented (where * are visible tiles and + the extra loaded tiles into memory):
+++++++++++
+*********+
+*********+
+*********+
+++++++++++
When the user moves the map, you remove the references to the tiles you no longer need and start loading the new tiles. Since you have one tile in reserve in memory, moving the map should still happen quite smoothly. Of course, if your tiles are rather small, or moving the map happens pretty fast you can increase the number of extra tiles you use