I'm assuming that you don't simply replace:
<input type="hidden" name="node_id" value="`author_id`">
<input type="hidden" name="node_id" value="`id`">
and avoid the "squirreliness" and inefficient _redir hackery out of (based on stuff you said in the CB) some mistaken impression you have that op=message works in user home nodes but not on arbitrary thread nodes.
So I repeat (more clearly) that whatever problem you saw you have probably mischaracterized the cause because I know of no reason why the above simple solution wouldn't work and I encourage you to try again and figure out why it doesn't so whatever bug can be fixed (if the problem you had wasn't actually due to something outside of PerlMonks).