First off if it says OH that does not mean that the body of water in the vessel has overheated. It means that the water inside of the heater tube is past the high limit that is set by the factory. But because you have good flow, I think? Then it is a bad signal. What would cause a bad signal and overheat code? A bad sensor or a short in the heater. You could have a thermostat going bad as mentioned but more likely a sensor in the heater itself. The only way to find out would be to take the sensor out and test it or just replace it is what I would do at ten years old. There should be 2, one for flow and one for high limit. If that is not the cure I would go next to the control box itself and make sure that it is functioning properly. I carry several controls that I can plug tub components into and check function with the test control box. You can look closely at your control board and make sure there is no burnt relays but I think a professional may be called for in this case.