"Is the explanation as simple as bomb came from later French?" That seems to be correct; tomb and bomb come from both different periods, and somewhat different dialects of French. It may be that the use of the "short o" sound in bomb was also influenced somewhat by the spelling; there seem to have been alternative pronunciations of bomb in the past, but they eventually died out.
Deducing the earliest English pronunciations
tomb had ME /uː/
The Oxford English Dictionary (OED)'s earliest citations for tomb in English come from around the late 1200s or early 1300s; the spellings used (mostly variants on <toumbe>) suggest that the pronunciation at this stage was something like /tuːmbə/. I can find little evidence that the word was ever pronounced with [oː] in English. (The OED does list some historical spellings with <oo>, but they occur in the 1500s-1600s, by which time the shift of [oː] to [uː] was pretty much complete.)
The older spellings with <ou> indicate that the /uː/ sound of this word is not due to the Great Vowel Shift. Josh61's citation about the Great Vowel Shift from Anthony Kroch's website explains that before a labial consonant such as /p/, /m/ or /b/, the Middle English vowel /uː/ did not shift: it simply developed to modern English /uː/. In some words, such as soup, we've retained the Middle English spelling that marks pre-Great-Vowel-Shift /uː/; but many other words such as droop have been re-spelled according to how they sound without regard to etymology.
Here is a quotation from Kroch; you can see that he specifically mentions the word tomb:
/u:/ was not diphthongized when followed immediately by a labial consonant. The original pronunciation of the vowel survives without change in
coop, cooper, droop, loop, stoop, troop, and tomb; in room it survives in the speech of some, while others have shortened the
vowel to /U/; the vowel has been shortened and unrounded in sup,
dove (the bird), shove, crumb, plum, scum, and thumb. This
multiple split of long u-vowels is the most significant IRregularity
in the phonological development of English; see the handout on Modern
English sound changes for further discussion.
bomb used to have an alternative pronunciation with /ʌ/ (and maybe one with /uː/)
The OED's earliest citation for bomb is from 1588 (spelled <bomes>). It says "in the British army /bʌm/ was formerly usual" and it also records some evidence of a pronounciation with /uː/ (the spelling <boom(b)> and a rhyme with womb). The pronunciation /bʌm/ appears for example in John Walker's Critical Pronouncing Dictionary of 1791, which says
BOMB, bu²m. s, (165). [...]
☞ I do not hesitate to follow Dr. Kenrick and Mr. Nares in this word, and all its compounds, in giving the o its fourth sound, equivalent to the second sound of u, though contrary to Mr. Sheridan's pronunciation, which makes it rhyme with Tom, from, &c.
But these alternative pronunciations don't seem to have survived into modern English.
How these words developed differently in French
As far as I can tell, the existence of a pronunciation with a "short o" sound for bomb, but not for tomb is not related to the different vowels found in the etymological sources of these words, Greek bombos and tumbos. Latin umb and omb seem to have developed to the same sound in Old French (as indicated by the merged spelling with <omb>).
Instead, it seems to be due to different sound changes that occured in French in different places or time periods: it appears Anglo-Norman (the French regional language that was historically spoken in Britain) had /un/, /um/ or /ũ/ in words where Modern French has /ɔ̃/. I don't know which pronunciation is closer to the one that was used by the common ancestor of these dialects: French words with these sounds have been spelled in various ways historically (<un>/<um>, <oun>/<oum>, <on>/<om>). But I found an interesting book partly accessible through Google Books which seems to say that the pronunciation with /u/ is older than the one with /ɔ̃/, but that /u/ itself resulted from an even earlier raising of a mid vowel before nasals. Here's how this sound developed in French according to From Latin to Modern French with Especial Consideration of Anglo-Norman, by Mildred Katharine Pope (1934), page 171 (search for bits of this extract to find it):
Gallo-Roman ǫ + nasal > Early Old French u + nasal > ũ in Later
Old French > ǫ̃ (c. xvii)
This last change seems to parallel the phonetic lowering of the Later Old French sound "in" /ı̃/ to Modern French /ɛ̃/.
So the modern French word bombe is pronounced with /ɔ̃/—as is the modern French word tombe, but it seems plausible that because the English word tomb, being an older loanword than bomb, was less prone to having its pronunciation influenced by modern French.
Other loans from French show /aʊ/ or /ɒ/ depending on the age
Other phonetic evidence in English corroborates the existence of the /u/ pronunciation in Anglo-Norman French. For example, take the English word round, /raʊnd/. The diphthong /aʊ/ occurs here as the result of the Great Vowel Shift; in Middle English, the vowel would have been /uː/. The OED's earliest citation for this word is from around 1300. It is related to Modern French rond /rɔ̃/.
Another relevant example is the word blond(e). It is currently pronounced /blɒnd/, but the OED indicates that this pronunciation, and the modern spelling, was taken from Modern French in the seventeenth century. When it was used by Caxton in the 1400s, he spelled it <blounde>, and presumably pronounced it with /uː/ (or some partially Great-Vowel-Shifted reflex of /uː/).
It might also be interesting to compare words like tomb and round (where the vowel before the nasal consonant was /uː/ in Midde English) to the word pint, another early loan from French, where the vowel before the nasal consonant was /iː/ in Midde English.
What I can't explain: some words that had short /i/ or /u/
One thing I'm not sure about is why words like tomb (from Anglo-Norman tumbe), sound (from Anglo-Norman soun), noun (from Anglo-Norman noun/nun/num), and pint (from Middle French pinte) ended up with long vowels in English, but plumb (from Anglo-Norman plom or something similar) and print (from Anglo-Norman/Middle French prente/preinte) ended up with short vowels. Kroch's handout suggests that the pronunciation of plum at least may be explained by the inconsistent shortening of previously long /uː/ in Modern English.
Other words with -omb
I realize the question is only about two specific words, but I thought I'd briefly discuss some other words with similar spellings.
Womb is, as you say, from Old English (wamb/womb). The vowel was lengthened before the homorganic consonant cluster mb, and had become [oː] by the time of the Great Vowel Shift, probably due the influence of the preceding w (compare who, from Old English hwā). So even though it rhymes with tomb today, this is a coincidence.
Comb is also from Old English (camb, comb). The a was lengthened before mb, just as in womb. Since there was no w here, the long a just developed normally to pre—Great Vowel Shift [ɔː] (compare stone, from Old English stān).
Catacomb is from French, and two pronunciations actually exist: one with /uːm/ like tomb, and one with /oʊm/ like comb. I would guess the former pronunciation is inherited from before the Great Vowel Shift, and the later pronunciation arose from the spelling due to analogy with comb. It's also possible that both pronunciations are based on the spelling.
Hecatomb is from Latin. According to the Oxford English Dictionary, there are three pronunciations: one with /ɒm/, one with /uːm/, and one with /oʊm/. I would conclude from this that English pronunciations of this word have always been based on the spelling, and since the spelling is ambiguous, there are different ways to pronounce it.
Aplomb and coulomb are borrowings from Modern French; both of them can be pronounced with the expected /ɒm/, but there are also other pronunciations, possibly due to analogy with other words with similar meanings or spellings (aplomb may be pronounced /əˈplʌm/ in the US, probably by analogy with plumb, and coulomb may be pronounced with /oʊm/, probably by analogy with comb).