If you are getting between 20 and 30 yards in front of the target, pehaps you should consider firing a spread offset to the rear of the target.
In games (sorry sims) like Silent Hunter, it's always tempting to try and nail stuff with one fish so you can have plenty of shots at stuff, but the reality is that real sub commanders in WW2 were a bit more pragmatic about ranging problems and would invariably pop a few torps at the target in order to maximise the chances of a hit, and if they all hit, then so much the better.
You might also want to consider trying for overlapping shots too, you don't have to waste a lot of time working them out perfectly, just try lining things up so stuff at the other side of the convoy is at risk from any missed shots on your primary.
Historically, a sub would have been doing amazingly well if it managed to bag anything over about 50,000 in tonnage throughout its war career. Yet as it stands, this kind of figure is relatively easy to get close to in one or two patrols in SH3, so I guess you could take the philosophical approach and consider the need to spread your fish a bit as what it is going to take to emulate the reality.
There are clearly some issues with SH4, and it remains to be seen whether the most recent patch has addressed any or all of them. I guess we'll find out.
In the meantime, you might want to take comfort in the picture below, this was a hit on a huge European passenger liner with 92 percent realism settings on (i.e. only the external view on so I could check out the new FSAA). The weather as you can probably surmise from the picture was appalling, with terrible visibility (I've tweaked the contrast in Photoshop a bit on the pic). The TDC wouldn't lock on at all, so I was forced to take a guess at a deflection shot with no speed, range or AOB settings entered, just timing a straight shot and firing all six bow fish. And guess what? Five of them hit

She went down in about thirty seconds.