Walrein. Ice-types are pretty much always a given to have at least one, since it's really the only thing that can more easily defeat Dragon-types (other than another Dragon-type, obviously). Plus, your other three choices suck (well, two of them, anyways). Cacturne has an awful moveset, and virtually no Speed to speak of. As far as Crawdaunt is concerned, its lack of decent Water-type moves (sorry, but Crabhammer doesn't do it for me, because of its bad accuracy), horrible speed, and its odd combination of types (Dark helps at times, but at other times doesn't) make it easy for me to give it a thumbs down.
The only other choice is Sharpedo, which is a toss up for me. Its a cool looking Pokemon, and has decent stats (good Attack, SP. Attack, and Speed), but the fact that it doesn't learn any Water-type moves on its own at all (and can only learn them through TM/HM, or breeding) is a turn off in my opinion.
Walrein is your best choice, because it learns powerful Ice-type attacks, and also has the benefit of STAB. Plus, you can also use it as your Water Pokemon as well. While it's not as fast as Sharpedo, it has a much better moveset, and it has good SP. Attack, giving you some firepower against Dragon-types.