The words now and snow have never rhymed in the history of English. Both of them are native English words; they did not come into English from Dutch or German. (Rather, English, Dutch and German all descend from a common ancestor, Proto-Germanic; that is why these three languages have similar words.) The different vowel sounds of these two words came to be spelled the same way only by coincidence.
Historically, U and V were not considered to be distinct letters, and the “double-U” W was only inconsistently distinguished from the single U (there was a lot of variation between U and W after vowel letters in particular). As a result, the digraph <ow> is usually equivalent to <ou> in terms of pronunciation: both can be pronunced either as /aʊ/ (now, noun) or /oʊ/ (snow, soul). The main difference in use is related to position: in the Modern English spelling of native words, <ou> is generally avoided in favor of <ow> at the end of a word. So in this answer, I'll discuss both of these digraphs.
<ow> has two different sounds as early as Middle English, but they come from different sources
The basic elements of Modern English spelling date back to Middle English, where we can already find the digraphs <ow> and <ou> used in many of the same words as in modern spelling. They are used in the Ellesmere manuscript of Chaucer's Canterbury tales, which is dated to around 1400:
His bootes souple / his hors in greet estaat /Now certeinly / he
was a fair prelaat
(203-204)
(f. 3 r)
Valerian seyde / two corones / han we / Snow white and Rose reed / that shynen cleere (253-254)
(f. 188 v)
The word snow comes from Old English snāw. (The spelling I’m using here for Old English is a modern standardization; historically, various spelling systems were used. For example, it's normal for Old English texts to have no length marker on the <a> and to use the letter wynn <ƿ> instead of <w>.) The Old English ā regularly developed to an “o” sound by the time of Middle English, which is reflected in the change of spelling to <snow>. In modern English, the “o” and “w” have merged into a diphthong /oʊ/.
The word now comes from Old English nū. So why is it not spelled with <u> in Modern English? It’s because during the Middle English period, English spelling conventions were influenced by French ones.
In French, due to sound changes, the letter <u> was used to represent the sound /y/ (a sound like /u/ but made further forward in the mouth); the sound /u/ was represented by the digraph <ou>. This French digraph (and the variant form <ow>) came to be used in English for the long /uː/ sound, while the single letter <u> was used to represent either the short /u/ sound, or the long /yː/ sound (which was quickly changed into a diphthong /iu̯/, which developed to modern English /juː/ or /uː/) that occurred in words borrowed from French.
Anglo-Norman scribes, trained in copying French and Latin, gradually contributed to the displacement of certain OE conventions. [...]
Digraph <ou>, introduced around 1300, indicates /uː/ as in coeval OF
and remains, e.g. in tour, pour, how or cow.
(A Practical Introduction to the History of English, by Juan José Calvo García de Leonardo and Miguel Fuster Márquez)
The Great Vowel Shift
The long /uː/ sound changed in most words to become /aʊ/ during the Great Vowel Shift that marks the start of the Modern English period. In fact, this sound change forms a nice symmetrical pair with the change of long i from /iː/ to /aɪ/.
But, there are also some words in English where <ou> represents a sound closer to the French original.
The Great Vowel Shift of /uː/ to /aʊ/ did not occur before labial consonants such as /p/ and /m/. Some words for which this is relevant had the /uː/ sound respelled with "oo" (such as "room" and "troop", both formerly spelled with "ou" or "ow") but in others such as group and croup the spelling <oup> continues to be used to represent /uːp/ in modern English. As far as I know, <owp> pronounced /uːp/ does not occur in any common nouns, but it does occur in the proper noun "Cowper", generally pronounced the same as the common noun cooper ("cowper" is in fact an older spelling of this common noun).
in several words spelled with <our>, such as tour and pour, it represents /ʊr/, /ʊə/, /uɚ/, /ɔ˞/, or /ɔː/, depending on the dialect. However, I can't think of any words where <owr> has these values.
<ough>, which is famously inconsistent in pronunciation, is also inconsistent in its correspondence to Old English vowels. For example, bough has /aʊ/ in Modern English even though it didn’t have /uː/ in Old English.
So the two main pronunciations of the "ow" digraph (/oʊ/ and /aʊ/) generally have different historical origins (the first comes from the vowel "o" + the consonant "w," and the second from the French digraph <ou>, originally used in English to represent a long /uː/).
Best Answer
Apparently the original stress was on the second syllable, but poets bent its stress to whatever suited them. For example, both Chaucer and Shakespeare were known to use both versions (conˈtrary and ˈcontrary), although Shakespeare seems to have more often used the one with initial stress.
You can get all that from the OED’s elaborative note regarding the stress of contrary: