It's a bit like building rules in in your mailbox for filtering all your messages. You can get pretty good, but can't ever account for every situation. I'd say you're off to a good start with the practices you're following, though I doubt there's any perfect solution out there.
Generally when I'm importing lists, data with customer/partners is a pretty common occurence, so I usually pull in the data on the SFDC side and use things like demandtools to resolve duplicates & match data up more efficiently.
InsideView is another interesting approach to importing.