Firstly create the flowmap texture and preview how the final shader should behave (The tool used for creating the flowmap: https://teckartist.com/?page_id=107)
Set the basic handlers for tiling, offset and preview the LOD blur of each mip map generated for the texture, while extracting only the R&G channels (since the flowmap is storing data only on these 2 channels)
Same basic setup for the texture going to be distorted by the previous flowmap sample
Remaped flowmap channels to range from -1 and 1 (since that's the UVs range), then, multiplied the input through a float that could preview the distortion caused by the flowmap
Added an animated value that outputs continuously values between 0 and 1, increasing over time the strength of the flowmap, thus, creating the illusion of motion
Using a single animated layer makes the animation loop noticeable, then, we have to stack another animated layer with the animation offseted by 50% (the 0.5 value added before the fraction node) and then blend these 2 layers using another animated range
Packed up everyting within a single subgraph and renamed the variables to make it "more multipurpose and less specific"
Stacked 3 layers and addded some color to preview the blending, also added a speed offset to mismatch the pixels of the previous stacked layer and used a smoothstep to lerp the layers geting rid of midtones, thus, increasing the contrast
Added an offset to the tiliing of the layers, clearly increasing the visibility of every stacked layer
Removed the debugging colors, and simplified the blends, sampled a gradient to recolor all stacked layers, the final output could be just a single layer to avoid all these fancy samples and the shader could be used with lava, mud, water, smoke and "oozzy"