I believe your test with hadd ran into this issue:
Unfortunately, RDataFrame does not react to this setting, so I believe that the snapshot crash you encountered is different from the hadd 100G limit that your test revealed.
Is there a way of using ROOT.RDataFrame(<largeNumber>), i.e. an RDF that’s just counting up? You could attach a dummy computation graph and we try to snapshot it, no input data required.