Multiple passes means multiple pixel shader execution as well as multiple ROP/blending operations, which can easily become a bottleneck both on last generation and current generation hardware.
As such, stuffing it all into one pass or few passes (C) should be advantageous.
I'm not sure about the "combine in a FBO" thing, although I cannot provide hard evidence for that, it "feels" like it would likely be slower (since you will have at least 2 FBO rebinds and at least one pipeline stall). Though of course it depends... if you combine the same 17 textures once and draw the single combined texture a thousand times, it may very well be faster. If you have a dozen or so different combinations of how those 17 textures are combined, it will likely look different.
Modern GPUs should have no issue sampling up to 17 textures in a fragment shader (GL 3.x hardware has a minimum of 48), and it is straightforward.