さっきの手順をまとめ直してみました。 駄目ですかね...

1.PC-A から 外部の PC-O にクライアント接続して待機。PC-O は PC-O からみたリモートアドレスとリモートポートを取得します。

2.PC-B から 外部の PC-O にクライアント接続して待機。PC-O は PC-O からみたリモートアドレスとリモートポートを取得します。

3.PC-A から PC-B に接続する場合、PC-O に要求を出します。

4.相手方のアドレスとポートを取得した両方の PC は切断して相手方にクライアント接続します。
  接続は失敗しますが、自分側ルーターの変換テーブルに相手方とのレコードが残ります。(きっと)

5.PC-B はローカルポートとリモートポートを逆にして、サーバーとして待機します。

6.PC-A は PC-B にクライアント接続します。