With really bad weather (like, you can see the target at 300-350 meters and your crew spots it at 200), I had some success attacking from stern tube at point blank range, something like this:
Red - enemy ship, black - U-Boat, green - torpedo path. I position myself on parallel course, overtake him and then turn 90 deg. away. With torpedo already pre-set in TDC, I fire when he starts to fade into the fog at about 300 meters. Even a zigzaging ship has little chance of dodging a shot at this distance (especially if it's big, and I don't even try to attack small ships in such a weather).