makeThumbnail emitted a premultiplied *image.RGBA, so thumbhash allocated and
un-premultiplied a full copy on every image while blurhash paid nothing. It now
emits *image.NRGBA, which thumbhash wants as-is, and blurhash reads that type
directly, premultiplying per pixel to keep its output identical.
thumbhash.Encode at the pipeline's 100x100 input:
134200 -> 95300 ns/op, 56188 -> 15163 B/op, 37 -> 35 allocs/op
decodeArtwork on a 1000x1000 JPEG:
5014796 -> 4973800 B/op, exactly the conversion that is gone
The scaler costs the same into either destination (7.33ms vs 7.34ms measured),
so no time is traded for this.