Ok that would be something like:
RenderTarget.rgb = PixelShaderOut.rgb * PixelShaderOut.a + (1 - RenderTarget) * (1-PixelShaderOut.a)
Which yeah, is too complex for the fixed function blending unit. You would have to do two passes (one to invert the background, then a second to blend the text over it), or do the blending entirely in a shader instead of the blending unit.
... Actually, using some algebra you can use the fact that:
(1-x)*(1-y) == x(y-1)+1-y
To rearrange this blend equation to:
RenderTarget.rgb = PixelShaderOut.rgb * PixelShaderOut.a + RenderTarget.rgb * (PixelShaderOut.a-1) + 1 -PixelShaderOut.a
...which is still too complex for the blend unit, but if you edit the end of your shader from:
return result;
To this, which moves some of that equation to the shader:
return float4(result.rgb * result.a + 1 - result.a, result.a - 1)
Then you can simplify the blend state to:
RenderTarget.rgb = PixelShaderOut.rgb + RenderTarget.rgb * PixelShaderOut.a
Which is just: SrcFactor = one, DstFactor = SrcAlpha!