In our default configuration hcid is started when udev finds BT device, through /etc/udev/rules.d/80-bluetooth.rules. This means that during system boot it is started just after udev, before starting of messagebus. But hcid fails to start if it doesn't find messagebus. The only solution for this problem is suggested in bug Url: hcid should start normally and repeatedly try to connect to messagebus.
Temporary patch (retry for 1 minute) is applied in 3.9-alt1.
Don't think there will be a better solution.
Will be.