I actually had a thought about how hydros could be more balanced.You'll have to go back and look at the discussion history, but let me make a short point. A hydrokinetic dam has a huge body of water behind it, not a small trickle. Some of the math we bantered about shows a heavy bias toward pretend water.
If you have a hydro that scaled by how big a pool of water was behind it then that'd be great. Otherwise I have sworn off hydros.
Problem: As you point out, hydros realistically need a large body of elevated water to supply the energy to drive them. Minecraft makes this unrealistic by allowing a single source block to create an everlasting waterfall. Without fundamentally changing Minecraft water mechanics (which I'm not suggesting), it's hard to make hydros balanced.
Suggestion: Run a low-priority task to scan for nearby water blocks attached to the source block which is providing water for the hydro engine. Occasionally convert one of those water blocks at random to dirt/sand/gravel/clay, at the lowest point of the body of water. What this simulates is the silting up of a watercourse that would happen anyway if you take energy from a flowing body of water. The player then either needs to a) use a really large body of water where a little silting-up isn't a big deal, or b) use a small body of water and spend time maintaining the water supply by clearing out the solids that accumulate before the body of water "dries up" completely.
Care would need to be taken to not impact server performance, but I'm thinking of only scanning a few blocks every few seconds/minutes, which should not be excessive. This way you get to keep the large-scale renewable energy, but need to either choose/build a really good site, or be prepared to spend time maintaining a smaller water source.
Edit: I suppose something like this could easily be defeated by using a small pool and an array of block-breaking blocks (turtles, TE terrain smashers, etc.). No trivial way around that, I guess.