fakt is that a shell just going through a ship without exploding will, even if it passes right though and exits on the other side (which is unlikly due to the amount of steel in the body of a ship which will cause the shell to "bounce" or leave its path) couse minimal damage.
A small hole in the body of the ship, even below the waterline, is not a hughe problem. This only gets problematic if a long rupture along the ship occurs (like an iceberg would cause). This is because ships are divided into sections and when one floods the ship has no problem sailing on. A relativly small leak can be fixed within minutes.
A shell exploding inside a ship is in contrast far more devestating. The smoke spreads very quickly, firefighting is extremly difficult on a ship (i know thats sounds stupid but thats how it is) And now think about the explosives stored in the ship...
Oh and on the torpedo damage: They couse damage by exploding below a ship, causing an explosion which again leads to the ship bending upwards in the midle and faling back afterwards. This will cause the ship to break, much like a ruler you are bending too far.
I was in the navy myself and watch a shitload of documetaries about ships so you migt as well trust me on those things
sorry for my english, if you find mistaces, please keep them
I am too lasy to explain this properly, sorry