In Proto-Germanic (PG) the prototypes of all the four words had the diphthong /au/ in the root:
rot < PG *raudaz
tot < PG *daudaz
kaufen < OHG noun koufo (“merchant”) < Latin caupō (“tradesman, shopkeeper”)
laufen < PG *hlaupaną
During the transition from Proto-Germanic to Old High German the diphthong /au/ > /ô/ before /r/, /h/ and all dentals, otherwise /au/ > /ou/. Since in *raudaz and *daudaz the diphthong /au/ was before the dental /d/, /au/ > /ô/, in *hlaupaną it was before /p/, so this change didn't happen. The exact PG form the Latin caupō transformed into is unknown to me, anyway /au/ was not before a dental there, so Latin /au/ > OHG /ou/.
Dutch has /oː/ in all the four words, because in its ancestor language Old Saxon aka Old Low German, the Proto-Germanic diphthong /au/ consistently developed into a long vowel /oː/.
As for Swedish, I don't know Old Norse and the Scandinavian languages enough to comment competently on the vowel change they had, maybe someone else here can do that.