Extending a 16 bit counter to 32 bits is done pretty much the same way on Teensy 3.1 as all other microcontrollers. You enable an interrupt to occur when the 16 bit timer overflows from 0xFFFF back to zero. In the interrupt, you increment the upper 16 bit variable.
Reading all 32 bits properly can be tricky. Again, this issue is basically the same on all microcontrollers. The simplest approach is usually to disable interrupts, read the timer, then read the upper 16 bits, and read the timer again. Then re-enable interrupts and check if the two timer readings are equal. If the 2 timer reading were equal, or the second is greater than the first, you can safely conclude the upper 16 bits didn't roll over while you were reading. If the second reading is less, usually the simplest thing is to just retry.