BASS_ChannelSetDevice is what you want, ie. move the stream to the newly initialized device before freeing the old device...
BASS_Init(newdevice, ...); // initialize the new device
BASS_ChannelSetDevice(stream, newdevice); // move the stream to it
BASS_SetDevice(olddevice); // set the thread's device context to the old device
BASS_Free(); // free the old device