DRY and Scalify _diffuse(/4), _(up/down)hill(/4)

no special reason I tackled this now, I was just looking at these yesterday, studying how `reference`/`Reference`/`_reference` works, and seeing so much copy-and-pasted code hurts me.