Multiple questions here, albeit related. I would suggest to keep your collision checking independent from rendering - who says entities outside screen don't need collisions? They want some collisions as well!
Try something more generic. Tiles on a grid lead themselves well to some hierarchical system (see: QuadTree). You might also want to check out some other library doing the work for you. There are a few and they'll mangle thousands of static objects with relative ease.