I agree with others that you should start with text on path. First, because this is required SVG functionality that we miss (spacing="auto"); second, because typically gaps in the text on path are much worse than in plain text and would benefit more from an automatic spacer; and thid, because this problem is more general, and if you find a good solution for it, you will have no problem adapting it for the simpler horizontal text case.
I'm not sure it's possible to do this as an extension, though, because this is core SVG functionality. But you can code a prototype in Python and then port it into Inkscape with our help.
I like the idea of "maintaining the grayness". The approach I would try first is this: make a solid gray stroke whose width is equal to the font size and length is that of a word of text (and correspondingly curved if it's curved text on path), then gaussian blur it by some large amount to get the "control image". Then blur your image with actual text by the same amount and compare to the control image, and move the letters around to achieve the closest possible match. I think blurring well approximates the way that human eye perceives the evenness of the letters, so when parts of letters get too close you get a darker blot in the blurred image.
-- bulia byak Inkscape. Draw Freely. http://www.inkscape.org