Hi Jeff,
Your understanding is absolutely correct. If you use Data Element to serialize the purchase event, it won't update the purchaseID variable. Also, there is no field to populate the s.purchaseID in DTM tools/rules.
Hence, to set s.purchaseID you would have to rely on script statement as mentioned below:
s.purchaseID = _satellite.getVar("orderID")
You would need to have this statement under "Custom Page Code" of Adobe Analytics section in the rule preferable in the one which populates the purchase event.