Port of #8619 to the v2.0 branch.
The migration streamer traversed buckets with visit_empty=false, so
empty buckets were never stamped with the snapshot version. Journal
omits into those empty buckets (behind the traversal cursor) were then
silently dropped, causing inconsistencies on the target during slot
migration.
- RestoreStreamer::Run now visits empty buckets so ProcessBucket stamps
them with the snapshot version.
- Pacing counts only non-empty buckets, so visiting empties does not
change the migration pace.
- buckets_skipped no longer counts empty buckets.