I've done some more investigation, it seems like the port forwarding is working. I wrote a little chat server and client to test it out, it works, with a caveat. Here's what's happening:
The Linux container that lives inside ChromeOS can't advertise its own ports to the world, apparently. Thus the need for port forwarding, which works.
Add into this the fact that the Linux container lives in its own subnet, and while ChromeOS has a route to the container internally, it doesn't appear to route outside traffic to this internal subnet. Security, I guess?
So bottom line, the client on another computer needs to talk to the IP of the Chromebook, not the IP of the container where Python is running the drone program.