:-) I don't think scripting Mail is reliable enough (yet).
redirect takes a boolean for invisibility; you could try setting
that, in case the script doesn't like talking to an invisible message.
You could try targetting the first outgoing message rather than
result of redirect:
tell outgoing message 1
but I can't get that working either.
Note that Apple's Create New Message script does work, so perhaps you
could construct a message the hard way, rather than by using redirect:
tell application "Mail"
set newMessage to make new outgoing message with properties
{subject:theSubject, content:theBody & return & return}
tell newMessage
set visible to true
set sender to theSender
make new to recipient at end of to recipients with
properties {name:theName, address:theAddress}
tell content
...
Perhaps Apple Mail's chief scripter has retired... (Wasn't he called
cricket?)