i suppose the only problem with this idea is that it will shift the vignetting as well, so even if the dust motes are taken care of the flattening will be wrong in the corners.
the pixelmath functions x() and y() return the current x and y position being processed. the function pixel(target, x, y) should return the value of the pixel in the target image at x,y, so i think an expression like pixel($T,x()+10,y()+1) evaluated against the flat would do what you want, though i'm not sure what happens when you start reading past the end of the image (meaning at pixel xmax-5 you're asking for pixel xmax+5 which does not exist in the target image.) at best you'll have some black borders in the new flat which need to be overwritten with something...
i'd have to mess around with it to see.
rob