GC orchestration cleanups and extra logging.

No functional changes, but logs the decisions it goes through in more
detail to aid bug hunting, scatters some extra comments to explain
things, and removes some dead code.