Some ships did sink right away. Especially the smaller ships. Only the ones where torpedoes blew holes in the hull took a while to sink (depending on the quality of their water tight hatches?)
Actually, the ones that took a really long time to sink were the ships with uncontrollable fires due to bombs or artillery shells, but intact hulls. As torpedo plane pilots liked to say, "If you want to put a hole in a ship, use a bomb. If you want to sink her, use a torpedo."
If a ship had an intact hull, but fires raging out of control, the fire would burn until it reached the magazine of a warship, then the ship would blow up. If the magazines had been flooded, or the ship had no magazines, the fire might burn for days before it burnt out, leaving behind a useless floating hulk. In such cases, the remains of the ship are towed to port so the hull can be scrapped or repaired, or the ship is sunk by some means.
Most of the time those torpedoes blow up and do something catastrophic. The smaller the ship the more likely they'll hit a vital area (boiler room, magazine, whatever). There are 2 sides to the story. It only took seconds to see HMS Hood completely gone. Some took days, some took seconds. Some just didn't sink at all.
I think we're basically in agreement here, but I also think that you're missing the difference between damage required to effectively put the ship out of action - hits to vital systems, uncontrollable fires - and damage required to sink the ship. You can effectively "destroy" a ship without sinking her - e.g., USS Yorktown, Hornet, Franklin (in the last case, the only reason that the crew didn't abandon ship is that the communicators were so badly damaged that the order couldn't be sent). Also, I think that we're both looking for extreme cases to support our views, when we should actually be trying to model average behavior for a sinking ship.
To get realistic ship damage and sinking behavior like we're looking for, you'd need to model internal ship systems, like those in planes are modeled, and set up some chance of a critical hit to a particular internal system, along with a minimum weapon strength needed to get that effect, plus some sort of hull breach factor which determines if the ship sinks or lists and how fast it goes down. Also, you'd need to be able to disable or cripple ship sub-systems, like guns or carried aircraft.
For extra realism, you could model compartments of the ship and have some sort of model which determines how fast they fill up with water, which in turn would determine how the ship lists, settles or sinks. In extreme cases, you could also have end cap textures and breaking parts for sections of the ship, so the the ship might possibly break apart due to damage, or break apart as it sinks.
Then, once you've got all that modeled, you can have a realism setting which allows "dead" ships to sink quickly, regardless of how fast they'd actually sink.
For aircraft AI, you just set a delay on the time it takes for aircraft to recognize that the ship is "dead." I think that this might be easy to do, since there's probably a timed sinking routine. Just set the recognition time to something like half the time needed for the ship to sink.
I'd also love to see invisible fire, explosion and smoke trigger options which could be added to any object in the game, to simulate the presence of highly flammable or explosive materials. For example, if you want to simulate a building/truck/ship filled with TNT, you just add the "10,000 lb. bomb" trigger to your object. When the object the trigger is attached to takes a certain amount of damage, BANG! Likewise, if you want to simulate a target filled with diesel fuel (flammable, but not particularly explosive), you combine the "really big fire" and "huge black smoke cloud" triggers, to create impressive fires. For extra fun, you could add secondary smoke, fire or explosion triggers which only are activated sometime after the main trigger is activated. This would represent fire spreading or setting off explosions.