honestly, your best bet is probably D3, but y'know.
I would say pick your strongest secondary out of Snake, DK, or D3, and then just practice the **** out of the matchup.
but really, this sounds more like you have bad habits/matchup trouble more than anything else.
I recommend just learning everything you can about the matchup, especially edgeguarding.
If you get good at edgeguarding, then you can build lots of percent off the edge, as well as even get gimps, and that's what you need to do to Marth to beat him.
@ Ninjalink:
Dk can outspace Marth. It comes down to the player.
I also like the Rob v Marth Matchup, lol. He's my secondary against him now lol.