Okay, sorry to develop this on the mailing list but I got a new update.
I'm mainly interested in comments about the idea. I think it saves a
lot of hassle.
1{ /env -i/!s|^#![[:space:]]*/usr/bin/env|#!|;}

You could do it all in a single command. The idea is:
If this is line 1:
If line has "#!", optional space, optional {"/use/bin/env"
followed by one or more spaces}, and finally the
interpreter you were looking for, then replace it all
with "#!" followed by the new interpreter.

I don't see the need for a special case for "/usr/bin/env -i".
Firstly, many systems (including NetBSD) prohibit multiple
arguments on the "#!" line, so stuff like "#!/usr/bin/env -i
foo" will fail often enough that people learn not to write such
code. Secondly, scripts in which you don't want the substitution
to occur should not be passed to the REPLACE infrastructure.
If, despite this, you want to avoid accidentally matching
"/usr/bin/env -i foo", then you can change the REPLACE.sys-foo.old
regexps to use "[^[:space:]]*" instead of ".*".