My advice is that you concentrate on your hold timing. Make sure your hold constraints are ok (e.g. you didn't accidentally false path or multicycle a path you did not intent to). Use the check_timing and report_timing functionality to help you out. Also put special attention to your I/O timing, another area people tend to make mistakes when constraining.
It is hold timing, by the way, the main reason you should not pad your timing. Padding may help you with setup timing, but will hurt your hold.
And yes, definitely use derive_clock_uncertainty.