Biggest reason to have trees static is to have them cast shadow to the ground(without hidden geometry hacks). 31k * 32x32 * 6bytes per texel is just 186MB memory. That should be totally doable and texture atlas should be split to multiple entrys.
One hack would be to use dublicate trees. So each tree has just max number of instances that still fit to single 4k page.