Hi,
This looks like a binding error, check the binding to the send mail step. there's no reason for the approver name to appear twice.
I would suggest using subworkflows and not local workflows.you can see the bindings more clearly and the logs are easier to read.
P.S
Try using _workitem.executedbyuser (object type USR01) and not _wi_actual_agent for your rejection texts, it has a 'name' attribute so your mail will look like '... has been declined by Andrew Smith'. although for the initiator name and not USJohn I don't have a simple way (create an object instance).