You dont need to use many buffered commands. I would recommend, for your requirements, always sending the next command, buffered, a bit before the previous command completes. This way your new command will start exactly on the end of the last command.
Otherwise I would suggest using non-distance commands. Using distance without buffereing the commands will either work exactly the same as the non-distance speed commands(assuming your new command is sent before the distance runs out) or you could end up sending your new command late. When a distance command finishes while at a non-zero speed, the controller will automatically calculate a new decel rate that will stop the motor in 1 second. This could cause you problems if your timing or calculations are off and you sned your new command late.