Don't run cleanups twice in "if true" blocks

Turns out `with_scope` already translates destructors, so by manually
translating destructors we end up running them all twice (bad).

Closes #10734