The tile count could be a problem yes. Not storing it in arrays, arrays are fast, but 4k instances can be laggy, depending on the system.
If it was me, I would prepare my tile types and store it into the arrays, then build only a screen and a half (tiles covering the screen +50% of its size). As your movement are tilebased (or can be assimilated to), you can update your layout every movement, with something like this :
- when move right, get the left column, move it to the right of the layout, change the frame of every of its tiles to what is said in the array (and maybe more than just changing frames, like spawning monsters, ...)
- same for the other directions
With a loading system like this, you could virtually have billions of tiles without lagging, as the object count won't go up and you would recycle most of the objects.