Ok, so I just re-read the posts in the thread and I see you have already created another brush out of white to act as a mask.
Did you physically create these yourself? Or does the program do it?
I'm guessing you did them yourself otherwise you already have most of the ability you need to load in other brush packs.
Shame.

Anyway... from what I can gather, and I could be wrong here, your problem is that on successive passes of your program generating random positions, the new trees paint over the old ones? And you want to figure out how to stop it drawing the new ones over the old?
If that is the case, is it not possible for your program to keep the X, Y co-ordinates of every tree placed, and then if it makes another pass and adds more tree positions add these new X, Y co-ordinates to the array and then re-draw the whole image again, from the top down.

Edit: Heh, I typed this as you were typing yours...