It seems that I was looking for "Inverse distance weighting" and not "heatmaps".
Someone already modified an existing Leaflet heatmap plugin to do this kind of interpolation. I haven't gotten it to work yet, but it looks promising.
https://github.com/spatialsparks/Leaflet.idw