Another paper which I need to read:

Δ-CRDTs are replicated by propagating a delta (Δ) of the current state that is missing in a particular replica. To compute the Δ, a getDelta function is called with the causal context of the replica ...

To achieve its properties, when compared to optimized δ-CRDTs, Δ-CRDTs needs to temporarily maintain additional metadata (tombstones). However, this metadata can be garbage collected locally at any time ...

The basic approach sounds very familiar. The main thing that caught my attention here is the promise of a method for garbage-collecting old tombstones. I think this would be a worthwhile improvement to my current design. Of course I'll need to read it to find out how well it'll work, though!