If a checkpoint operation fails on a tree, make sure it ends up marked dirty

When discarding a tree, if there are updates that are too recent to discard, fail with EBUSY rather than asserting.