To combine some of the ideas….
How about Submarines Attack @ 0, Defend @ 0 but have to be actively detected by destroyers to be sunk. Each destroyer in a convoy negates one submarine. Each destroyer in a convoy that rolls a 1 finds a submarine and sinks it. (Think AA Guns.)
If the submarines attacking ever exceed the number of destroyers in the convoy, ALL TRANSPORTS AND CARGO are lost. (Destroyers can still attempt to detect and sink a submarine for each destroyer present.)
That way the submarines are still useless in surface combat, but they still have teeth and still force the enemy to put destroyers out to protect their transports. (Examples to follow.)
EXAMPLES
Example 1: America and England have a joint convoy in a sea zone. Other ships may or may not be present in that sea zone, but have no bearing on this convoy or this convoy raid. The convoy of transports are protected by 3 American Destroyers and 4 British Destroyers. Germany attacks this convoy with 8 submarines. This automatically sinks all 4 transports, however the seven destroyers roll seven dice, any 1’s result in a sunk submarine as well.
Example 2: Japan has 7 destroyers and some transports in a sea zone. America attacks with 6 submarines. Since the defending destroyers out number the attacking submarines, all transports are 100% protected and each destroyer rolls a die. Any ones result in sinking a submarine. (Yes, this means two destroyers roll against one submarine.)
Note, other than destroyers, transports, cargo on transports and submarines, no other units are effected at all. You could have 400 battleships in a sea zone and have zero influence on attacking submarines with them. Likewise, you could attack a battleship with 400 submarines and also have zero influence on it.