My idea would be to just modify flowing blocks. So if you have a source block flowing into an air block, the adjacent air block has a chance to turn into a source block of water after so many ticks of rain. It seems like a good compromise between totally finite and infinite, slowly renewable if you don't use too much. I'm no coder, so I don't know how difficult that would be but it seems like it would be easier than trying to change how all water works.