A good way to do this would be to give subs a bonus when attacking from stealth. (In addition to fixing the lack of invisibility problem.)
Where it would fall apart though is when attacking a combined force.
Wodan
I had that though too. If the subs have an attack bonus, they can hide under surface ships and be protected. This reduces their vulnerability. Of course, the ability to hide under the ice is always there as well. Negating it entirely if destroyers or other submarines were present would fairly well make this useless, since most sensible players would keep such units in the stack.
But subs must travel alone some of the time, and being very weak on defense, relatively, they don't have much chance. A big part of this is how easy destroyers detect them. Limiting their sight radius would help with that. But then, you still have Airships, and historically, aircraft which should sometimes spot them.
Detection and subsequent destruction is where submarines end up being useless. It does no good to have a fair chance of evading and surviving an attack, if the subs on defense are simply hunted down and killed.
Compare two small task forces. First, a surface group, one battleship, two destroyers, one transport. Second, a wolf pack of five submarines. These are the same cost, I think.
If the surface group is attacked, the first three subs are likely to lose, but may withdraw with good flanking bonuses. If their targets have comparable levels of promotion, the odds that they'll win drop. The last two subs may kill their two targets, and if lucky, might get the transport -- if loaded, a high value target, which is of course a good reason to use subs.
But then, they must evade. Badly wounded, the ones that withdrew, unless they have some secure cover, are simply going to be consumed by the survivors. Even a damaged transport can kill an almost-dead sub. A speedy fresh destroyer moved into the area might clean up the rest before they get away. The true odds of making it a secure place to heal aren't that great, unless you fight within movement range of a base.
If the surface group catches the submarines, the battleship can wreak havoc with barrage, and in any case is pretty sure to kill one of them. The destroyers take a couple more out, most likely. Again, if the submarines are taking flanking to evade, they don't get attack bonuses, so even for a strength 30 attack sub they're still weaker than promoted destroyers. The surviving subs might kill something, but are pretty much in a bad way as far as the economic exchange goes.
So either way, the subs lose economically. You lose more in subs than you take out in ships they kill.
Am I wrong? Aren't submarines supposed to work the other way around, being a relatively cheap (but risky) way to fight a naval war?
Two surface combat groups would tend to be more even on attack vs. defense. Speedy destroyers, when wounded, can escape often.
The attack sub change is a help, and will definitely tip the scales for my use of them. I like using some just because I think their cool, but that doesn't mean that they are a good strategic weapon.