If I remember right, CoronaDistance uses ray tracing to find the nearest point on the surface of an object it is taking the distance from - so you are asking Corona to raytrace to determine how far a given surface point on the landscape is from every surface point of every tree, or something like that in terms of calculations. That is a lot of calculations :)
Not sure what difference it would make, but you might want to have one distance map per tree, that way it's only calculating distance to that tree and not all trees (you could then add these together and pass the result to scatter to place the small plants). Another option, perhaps along with the first, would be to split the landscape into separate parts, so that each part is only calculating distance to a particular tree/particular trees.
EDIT - the above would really require the trees baked to geometry. Though you could use the second approach and divide up the landscape and each part has its own Scatter, that might reduce the load on the Distance map too as it won't have to consider tracing to every point of every tree in the scene for every point on the landscape.