It does not look like you are clearing the timebase interrupt flag, so the TBM will re-interrupt as soon as you exit the ISR.
In your service routine, you need to write the TACK bit in the TBCR. Try this in the ISR:
TBCR_TACK = 1; // Clear interrupt
If that doesn't work, we will dig further . . .