Cwm and crwth are the only words I know in English (both from Welsh / Cymru natch) that have {w} as a vowel /u/. As for vowels and semi-vowels, /w/ and /u/ are similar, but slightly different. (Same with /j/ (as in /jEs/) and /i/.) The thing with the vowel in, say, 'grow' /grow/, is that it's not really a pure vowel but a diphthong. It's like a Spanish or Italian /o/ followed by a /u/ being pronounced less as a vowel and more like a semi-vowel.

Here's what Peter Ladefoged at UCLA has to say about it: "A semi-vowel is a kind of apprimant consisting of an non-syllabic vowel occurring at the beginning or end of a syllable. When at the beginning of a syllable, it usually consists of a rapid glide from a high vowel position to that of the following vowel. The semi-vowels in English are /j/ and /w/, which are like non-syllabic versions of the English high vowels /i/ and /u/ respectively. In other languages there are three high vowels /i, u, y/. In some of these languages (e.g., French) thereis also a semi-vowel corresponding to the high front rounded vowel /y/. The symbol for this sound is /ɥ/, an inverted letter h." He gives an example for this latter semi-vowel in the French 'lui' /lɥi/. Hope this helps.

NB: I've used the Unicode character for the inverted h, which some of you will be able to see, depending on browser and OS. It is 0x0265 or 613.