Both approaches are equivalent - blitting from an unmodified source, be it a bitmap or tile. As long as you have a quick way to determine which tile is used per coordinate.
I was thinking further about the mod. It's one of my favourite instructions but boy is it
slow. It occurred to me that you could fit a look up table in 300 or so bytes (320 mod anything > 1 would fit in a .byte), using the y position as the array index. Perhaps not worth it for one mod per frame but if you're doing it a lot, maybe something to think about.