New news - the hot slave seems to be performing as expected with no long pauses.
It looks like we're using an archive_timeout of 60 seconds and default checkout_timeout and checkpoint_completion_target. I didn't do any of the research on this. It seems like we're asking postgres to clear all of the dirty buffers every 60 seconds. With 48 gigs of shared buffers we could have quite a few buffers to clear. Is there some place I could check on how all that is going?