Arduino remote-controlled car stops after a few seconds
The problem was that the bluetooth module would receive bytes faster than the SoftwareSerial was able to read, so bluetooth.available() would return more than 1U after a couple of loops. This was fixed by changing the following:

void readCommand(void) {
  command = 0U;
  if (bluetooth.available()) {
    while(bluetooth.available() &gt; 1U)
      bluetooth.read();
    command = bluetooth.read();
  }
}


The 'make-it-run-backwards' problem was also solved, but was unrelated.