Xfrog/onyx whatever trees (the models arent as important as most people seem to think, so long as they’re not awful)
Convert to proxy and instance round your scene
And the most important bit - spend ages getting your materials right, tweak the colour balance and hue of your leaf materials to get it looking as natural as possible.
What I can suggest regarding trees/vegetation - no opacity mapped leaves, stick to geometry. I’m using onyx trees, and they’re fine for the most part - especially when viewed from distance. If you on the other hand want to do a close-up of the tree - go for hi poly models, like the ones from Evermotion.
here are some examples, literaly thousands of trees, render times about 6-7 minutes
onyx trees, all instanced as proxies, with translucency and such.
the last three are frames from an animation, hence the motion blur.
about onyx - the trees are ‘designed’ in an external aplication (ONYX TREE) and then imported via plugin (TREE STORM) into 3dsmax. Then You can play with materials, wind animation and stuff like that. The tree can then be proxied (if needed).
Materials can be tweaked on proxies themselves, because the material structure is intact - apart from mapping, unfortunatelly You cannot map a proxy - it keeps mapping from it’s original object.
i dont know if it still has a problem but the x-frog import plugin was really slow when compiling the scene for render. i used to just convert to editable mesh and then render