What should I use to make/edit maps?

Not really an answer to the question but if you want to see an example of dynamic tree placement based on the underlying mesh, you can take a look at the IsoSurfaceDemo.

…all of those trees are randomly placed with no knowledge about the world other than water level and mesh. The grass is placed similarly.

The basic approach is to find triangles that face the proper direction and check locations against a plot function. (I use some combined noise textures but anything works.)

This app uses basically the same placement algorithm but has saner terrain:

For what it’s worth, the trees are SimArboreal trees:
http://simsilica.github.io/SimArboreal-Editor/

…which exports to j3o and has configurable LOD and so on.

I use instancing in the app for performance.

Don’t know if any of that is useful or not but maybe it inspires something.