One further problem I have, in the same vein, is figuring out how to pad a time estimate in terms of trying to compensate for pitfalls I don't forsee in a design.

This is where having a manager who is a developer helps a lot. I am fortunate enough to have a working relationship where I give him -exactly- what I guess in terms of a time estimate. I then rely on him to translate my engineer time guestimates into something that can be given to outside parties.