Flickering is caused by the delay between values in the constant buffer (globals) and values in structured buffers becoming visible in the Deferred shader. It appears that the update latency (the number of frames between setting the value in C# and being able to access it in a shader) varies depending on the type of buffer. Therefore, moving globals into a structured buffer provides a workaround for the single pass loop.
Doing the same for FPTL does not appear to be sufficient. Could be that the additional compute pass introduces extra frame(s) of latency, or that globals from ShaderVariables.hlsl need to be moved as well.
Globals from Clustered appear to be set once for multiple shaders, which makes implementing a similar workarond even more complicated.