According to the documentation, the surface reference frame moves with the vessel. This means that your code is measuring the velocity of the vessel relative to itself, which is 0.
Try using a reference frame that is relative to the CelestialBody instead. "vessel.getOrbit().getBody().getReferenceFrame()" should get you one that rotates with the planet allowing you to get speeds relative to the ground.
I'm not too familiar with the JavaAPI (I mostly work with the Python one) but I'm also not sure whether the line "this.surfaceReferenceFrame = vessel.getSurfaceReferenceFrame();" actually sets the reference frame for use with the functions. Try passing reference frames as parameters to the functions instead. Something like "return flight.getVerticalSpeed(refFrame);" after you've set refFrame to be whatever reference frame you want to use.