You can do that with either fragment shaders or a grid of textures. With fragment shaders you get more precision.
The basic idea is that you have some kind of transformation and then you recursively apply it to the same data - meaning you store the results of the last frame and then apply the same transformation to it again.
As an example you might divide the screen to 24x24 quads, and then jitter the vertices a few pixels. Applying this transformation to the data will cause the pixels to flow a bit.
Add a smoothing pass and voilá - fluid fx.
Here's a quick simulation of this done in photoshop; few frames with the "waves" filter applied and re-applied:
note that it's the exact same filter applied to the previous result, not new parameters applied to the first frame.
edit why it appears so fast is due to this simplicity - it's just rendering the whole screen once, using the last frame as the source texture.
edit Browsing through the presentation, yes, it does seem it's based on "real" fluid simulation, but the result is pretty much the same - rendering the whole screen, using the previous frame as source texture, offsetting using an offset texture which contains the motion vectors. Calculating said motion vectors is another matter, but can even be done offline.