If you plot the geometry of the original image, you would have seen that it simply doesn't cover all your geometries.
Return from your function:
return ee.Image([betMEAN, ltNEG, gtPOS])
.selfMask() // Mask 0's
.multiply(ee.Image([1, 2, 3])) // Assign values to the classes
.reduce(ee.Reducer.firstNonNull()) // Pick first class
Disclaimer I have no idea how an ESRI Elevation Service works. So, I'm assuming that you want to have actual elevation values available in the client.
It sounds as if you need a WCS not a tile cache - a WMS will always serve a picture of your data, though I guess you could use Jiffle to calculate a LERC value but a WMS will still scale it to be an image.