Second thing sounds like a bug, but for the first thing:
If you know beforehand you'll potentially want to freeze the weightmaps, the trick is to store your weightmap data to a custom attribute, then with a second icetree *on the weightmap* (just select the map when creating the icetree) then you can read your custom attribute and set the weightmap data.
This way if you freeze the weightmap, it will freeze that icetree inside it and not the first, so your other effects are safe. :)