Data structure backing tile-based map?

I’m building a tile-based game with a similar art style as Stardew Valley, but have a few questions around technique. My understanding is that it’s best to store the maps as a byte array of tile ids and render based on that.

But:

  • In the render loop, is it efficient to simply iterate that byte array every time and pull the tile image from a tilesheet?
  • How are "overlaid" items typically modeled in these type of games? e.g. In SV, there are often rocks/trees/houses/boundaries that expand over multiple tiles. Should these be treated as items consisting of tiles as well, or as a separate "layer" of individual items that are placed at x/y coordinates?
  • Is multiple byte arrays with tile properties (e.g. isPassable) more efficient than an array of objects?