It was actually down to the client automatically connecting and requesting data. I saw a call to:
att_server_request_can_send_now_event(con_handle);
in the BT attWriteCallback where it checks for:
ATT_CHARACTERISTIC_ORG_BLUETOOTH_CHARACTERISTIC_TEMPERATURE_01_CLIENT_CONFIGURATION_HANDLE
When it then schedules a data send to the client the system freezes. It makes sense I think as the ledTask can send data out as it sends data into the BT task via the queue but the client comes in through a callback, presumably outwith the context of the BT task.
Preventing it sending data out on a client notification solves the problem and the queue is working perfectly, allowing the task to send data over bluetooth by sending the data in the queue to the bluetooth task.
Just have to do the same for incoming requests from clients and route them to a queue for the BT task to process.