From what I've read, US tonnage estimates for sunken Japanese merchants in the Pacific were often wildly innacurate, usually being too high (possibly because US commanders were thinking in terms of Western merchants, whereas many Japanese merchants tended to be smaller than the Western norm, but I'm not sure).
In the Atlantic, as you noted, recognition manuals often provided identification of the ship sunk, and in many of the books I read, identification of a particular ship sunk in the Atlantic was quite often correct. However, you are correct in pointing out that in hurried actions and rough weather, identification was not always possible; I have always received the impression that identification during such incidents tended to be less precise and more inaccurate than normal (although I may be incorrect on that - I would myself be interested in hearing more on the subject).
As well, remember that although belligerant merchants ships maintained radio silence under regular conditions, once torpedoed, many that were still capable of operating their wireless sets sent out distress signals identifying themselves. Upon receiving the name of the vessel, U-Boat commanders or watch officers could check Lloyds or recognition manuals to find the ship's exact tonnage.
Hope this helps a bit.