Given the greatly increased performance of the C# version, I'd propose doing away with the salvo concept entirely (or, mechanically, assign each missile to its own salvo).
This will slightly increase the propensity of AMMs to overkill when launching multiple AMMs per ASM, but it would remove the arbitrary distinction between 5 missiles fired by the same fire control in the same increment, and the same 5 missiles fired by 5 different FCs.
This would necessitate reworking the interaction between beam PD and missiles. My proposal would be to consolidate all missiles that are valid targets for beam PD during the increment, and resolve firing as if they had been one large salvo. The defender would need to be able to set how the PD should prioritize the missiles (which can be basically three attributes): Thermal signature, target cross-section (size), and speed, and whether they should be targeted in random order, lowest to highest, or highest to lowest.
If implemented in isolation, it would mean that no vessel ever required more than 1 FC for final defensive fire. However, to counter that, we could limit the number of weapons a single FC could control (with a single turret counting as one weapon, giving an additional advantage to turreting your PD weapons).
To balance this restriction, missile fire controls should be similarly restricted on the number of missiles they can have in space at any given time.
To begin with, I'd suggest letting an FC control 5 missiles or beam weapons, with a tech line for growing control capacity. Reducing this number during the component design phase should have an effect on size and cost (so FCs that only need to control one missile or weapon at short range get to claw their way down to fighter size without invoking special rules for fighters.).