(maint) Use common mechanism for pushing scope

The block expressions were doing the ephemeral scope protection in their
own way, but duplicating the with_guarded_scope logic. This changes them
to all use the same way.