Just one side note to this. We are not yet set up on this. But we are implementing this for the future. Anaren's A20737 modules will come with Anaren's OUI and BD_ADDR. So if that is acceptable, then using an Anaren module will remove any need to acquire your own BD_ADDRs.
My understanding is that you should not change the BD_ADDR for the lifetime of the device: Changing BD_ADDR from the application
This thread seems to discuss changing the BD_ADDR within the application, but the developers also discourage this as it violates BT Sig policy, so I'm not sure this is something that will be easily supported.
If you are looking to program random addresses in production, then we provide a mechanism for that within the SDK/command line tools: BD_ADDR: Changing BCM20737 Board Address for Production
The way static random address is supported:
1. In the factory (or during FW download), program your device with BDADDR ff:ff:ff:ff:ff:ff.
2. Update your _create function to call blecm_set_static_random_bd_addr()
This is it. The function will generate the random address with appropriate format and save it in the NVRAM. This address will be used forever after. You cannot specify any portion of the address, because it shall be random.