As I said, move the rtpengine usage in a branch_route from request_route, otherwise if you touch the body again on re-routing, header operations can show up twice. I think the FAQ on wiki present more about this behaviour.
Anyhow, it is optimal to use rtpengine in branch route, because it is done when forwarding is decided.