Eventually, found this error in SP logs:
No default finder found for ViewGroup associated with SpecificFinder (Read Item) operation.
So I had several external lists based off of one external context type in production and only one external list based off of one external content type in dev. For InfoPath query to work, you can only have one external list per external content type. Confirmed this to be true :(