Then the straight critical engineering question is do you have to have 3000 full 8 byte data points per second?
Can you get away with 1000 packets per second or using fewer bytes each to pass only the changes between data points?
Does the data have to go wherever via bluetooth or is that a convenience?
Must the data be generated +and+ sent continuously at full speed without letup?
Suppose that you could generate and store the data during a busy time and transmit during data-idle time?
SPI is Serial Peripheral Interface. It's not so different from the RX/TX TTL serial that code for one can't be substituted for the other without major effort.
Indeed, I could win some bytes by passing only the changes between data points but I won't be able to divide the number by 3.
Bluetooth is the best choice to do a wireless low-energy connection with an Android device.
It is impossible to have idle time, or wait to send because I must receive the data in "real-time" and the movement speed is constant.
Following your ideas, I found this SPI to UART converter : https://www.sparkfun.com/products/9981
With it, I should be able to run my Bluetooth module at full speed (460800 bauds) so my problem will be solved, given that the time taken by the functions of Arduino's SPI to transmit to the converter the message to be converted to Serial is small enough...