I think the way Notch approached water/lava in MineCraft doesn't require a lot of CPU, as he didn't go for ultra-realistic.
He has source blocks that water/lava can flow from, with a maximum distance of 8 squares from the source block.
If you have MineCraft, put a source block near the edge of the terrain, and you'll see that there is no limit to the drop, and that it either continues the 8 count or restarts it when it hits land (I forget which).
Also, it doesn't update every tick.
Far from it.
Water seems to update a few times a second when it's spreading, and lava seems to update every few seconds.
So it's not down to masses of computations, but more down to clever logic with timed updates.
And of course, you only need to update the flow of a source block if it's surrounding terrain changes.
It shouldn't be too difficult to get it working in 2D, but will probably take quite a bit of tweaking when in place (as Notch had to).
Krush.