I think I got to the basic source of the problem. It has to do with FEC.
Unfortunately what I didn't realize is that the incoming sequence numbers include sequence numbers dedicated solely to FEC packets (which I see in the WebRTC project, it makes specific note not to NACK), so the resulting stream sent to firefox is missing sequence numbers entirely. Firefox interprets this as packet loss, starts NACKing like crazy, and in response to the frequent NACKs Chrome tanks the bandwidth.
Does this sound like a reasonable explanation?
If yes, I see two options:
1. Disable FEC entirely
2. Maintain a sequence number mapping, and rewrite sequence numbers as they go out. When I receive a NACK from Firefox, I have to translate sequence numbers before forwarding on to Chrome. And translate the resulting RTX when it passes back through licode.
Any other ideas?