if we look in our trusty bluetooth direct commands documentation from LEGO, we see that nxtRemoteProgramStart just sends the bytes;
22, 0 ,0x80, 0x00, 20 bytes of "program name" (with null terminator)
basically 2 bytes of length, low byte first = 22
0x80 = direct command, no reply wanted
0x00 = command to run program
using setBluetoothRawDataMode and nxtWriteRawBluetooth, its fairly easy to send this. problem is there is no way out of it, according to the help file. So a remote control would not be able to send 'messages' after using it (which seems like a rather burdening restriction that others have gotten around), and be stuck with only using raw bluetooth mode (which would work fine, just not what you are used to).
So, probably not exactly what you wanted for that purpose. I'll keep an eye out for a way to kick it back out of raw mode.