I use DBC and unit tests for different things, along the lines you are reasoning.
I don't verify contracts using unit tests, instead I create a "bot" that simulates (fuzzy) user behavior and use that to try to trigger error conditions in my app. I find contracts to be really helpful especially in the cases where the number of permutations of input to my app is really large, since it in that case is very hard to get confidence only from unit tests.
I don't run my code in production with contracts enabled.