I’d start by checking for a dragging brake or a motor issue. The brakes are easier to check, start there… Either jack it up and spin the wheels and listen/feel for a dragging brake or drive it around a bit, using the brake as little as possible. Then coast it to a stop, park it and see if any of the brake drums are hotter than the others.
Could be a motor issue, sometimes those will cause error codes to show on the BDI/speedo display. If acceleration is jerky or uneven, or motor runs excessively hot, makes odd noises or smells really bad, these are all possible indicators. Stuck brushes seem to be somewhat common. Without knowing if it still has the stock short GE or if it has been upgraded with an aftermarket motor, and then specifically which one, can’t really accurately advise you on how to take it apart.
Don’t have an electrical print handy, can’t remember if the turf/road switch / circuit is wired in a way that it could fail in such a way that it would only send “turf” signal to the controller. Might want to check and see if the wiring has been monkeyed with.
I don’t really think that bad wheel bearings would cause that much of a speed loss, but there is a section in the manual on how to tell if a bearing(s) is going out. You’d hear them and feel it.
After that there is the controller. Could be an internal component failure or maybe someone reprogrammed it.
here’s a note from Rodney on what the resistances should be in the motor connections, might help determine if you have a stuck brush or two.