Best approach (and how to accomplish) mass amounts of interactable objects in a scene without huge performance loss?

what I’m trying to do is make a forest with hundreds of trees and other assets that I can interact with for a small survival game, set on a medium size island.
EX: berry bushes, choppable trees, rocks, etc.
initially I had thought I could use the built in terrain tools, however that does not work with what I’m going for.

the simplest solution would be to place the objects in the scene manually as prefabs however this has a considerable performance drag when there will be thousands of objects, even with the just over 500 trees needed to cover the island I already noticed significantly worse performance. I cant replace the terrain trees with prefabs all at once because that will not fix my issue, and that is all I can find any information on how to do.

a solution that I believe could work would be to replace the Terrain trees with prefabs either whenever the player interacts with them, or when the player gets near them. I would imagine I would also need to change them back to terrain trees after a period of time, or after they are no longer in use.
I have never used the terrain tools, or have never needed this amount of objects in my other, smaller scale games.

I feel like this has to be a basic and well covered issue since a lot of survival games (the forest for example) would need a system like this and I must be missing it. any help would be great! if there are any other alternatives to the solution I mentioned before, or if anyone has ever made a system like this and could provide details on how this might work.\

thanks!

You could try Object Pooling the trees, and instantiate or call them from the pool when the player is (any)f near it.
Or you could try turning the objects(Prefabs) active and unactive depending on the camera view.