Because we want to maintain compatibility with 3rd party admin extensions which often depend on the specific markup, we've had a lot of luck with CSS-only reskinning. The markup really isn't terrible so we've made sure no Django CSS is loaded (just create 0 byte CSS files matching each built in CSS file).
We then add in Bootstrap CSS+JS so we can some of the handy UI components and then our own CSS on top of that.
We then add in Bootstrap CSS+JS so we can some of the handy UI components and then our own CSS on top of that.