is there the same restriction by Lejos or NxtOSEK?a hardware restriction in the NXT Bluetooth implementation
On the other hand, the end-user shouldn't have to care about these details anyway.
If the code says "wait(20)" and BT is still busy it should wait 10 ms or anything more by itself until it's ready and then do the job.
Also, 20ms have been just a rough idea, 30 would be fine as well, but I also had wait(50) instead and it didn't work either reliably.
So not the 20, 30, or 50 ms delay are the big problem but the lack of quick and safe and convenient direct remote commands for the enduser, without mailboxes and bit-shifting and above all not having to worry about Bluetooth status idle or active or pending or no error or if/until mailbox empty or not.