I finally got impatient enough to write this driver myself. You can find the driver on GitHub here:
This device has some interesting differences from expected behavior outside of the 2ID oddity. The example ZigBee CT driver probes the supported values to pass for the colour temperature by setting it to FFFF and 0000 and expects the device to clip the value to the min and maximum color temperatures. It then waits for the message to arrive stating what the color temperature was actually set to. Instead this device returns a response message saying an invalid value was passed for the move to colour temperature command. I had to roll up my sleeves and start reading the "ZigBee Cluster Library Specification" to understand what was going on and got it working reading attributes designed for the job instead.
We could also do with some decent documentation around driver development from Hubitat. There's too much left to trial and error and probing using log.debug to see how things behave. Now that smartthings is dying we can't rely on their documentation any more. There's literally no documentation around raw commands (which I needed to use as the generated commands didn't work).