Policy based routing for p2p

I have a setup with 2 internet gateways (with 2 public addresses) and several users.

We initially thought to send p2p traffic to one gateway and rest of traffic to the other.
So we tried to set it up and… ouch, we realized that it was not possible as p2p classifier would match p2p packets after connection was established and then it would change gateway (and source address) rendering connection broken.

Well, then we thought of a different policy: detect users using p2p and then set them in an address list that was effectively routed through the second gateway.
We could also avoid that already established connections changed gateway (marking connections of non-blacklisted users).

Does anyone have a suggestion on how to cope with p2p, having 2 internet connections?

Set second route as default and then route rest traffic to first gateway…