I wonder if it would be simple enough to detect that it's plugged into a USB 3.0 port by checking for some signal on the USB 3.0 lines, in which case you can pull 900mA. With the old type B connectors, you can just check that the USB 3 ground is in fact connected to ground but that doesn't work for type C.
Detecting that the two data lines are connected to each other is quite simple, pull up one to the supply rail with a 100k resistor, connect the other to a GPIO with a 1M pulldown.