I dislike this approach because on delta cases (which are insanely common, most objects are deltas) we need to perform two compares to determine the type of delta.

Duplicating the code under both branches meant yea, its duplicated instructions, but at least we only had one branch to carry out instead of two.