A displacement map could generate the offsetting effect, though it would be static, or at most scrolling, unless you regenerated the displacement map texture on the fly.
To tint you could use a ColorMatrixFilter’s tint() method, but that lets you tint with one colour at a time. To do it in different colours over a whole image you would need something like a DisplaceMapFilter for colours, i.e. one which reads the tints from a texture.
It would make sense to combine the tinting and offsetting as they could be both done at the same time in the same shader. In fact they could read the data from the same texture, with a bit of data compression.