Tile based level with static meshes

I’m trying to build a randomly generated 256x256 tile based level for an rts style game, where each tile could have static mesh such as a tree or rock in it (so the floor isn’t tiled, just what it can contain), and was trying to work out the most performant way to implement this. considering there can be up to 65536 individual meshes, but probably closer to 20k in most maps, with probably about 50 different models, any only up to about 1000 tiles/meshes will be on screen at a time:
afaik instanced static meshes would be much faster to generate at runtime, but without culling, the fact that there would be thousands of them could mean a decrease in performance compared to culled static meshes.

Does anyone have any experience in this or any general advice for accomplishing this? Maybe I’ll have to scale down the map sizes to make generation reasonable with non instanced static meshes