It really depends on what you mean by "possible".
If using only the USB code we publish for Teensy, doing everything from the comfort of simple Arduino programming, then no, not possible. The existing USB code is designed around a single set of USB descriptors.
If you're willing and able to edit the USB code, then yes, of course this is possible. But some pretty deep edits in the code would be needed. Fortunately the descriptors are accessed from only 1 place that responds when the host requests them, and it uses a table to match the hosts request against a list of all the descriptors, so you could perhaps create 2 tables or extend the table somehow.
You'll also need the code which actually implements the communication the USB descriptors advertise to the host. The current built process conditionally compiles only what's needed, so you'll have to edit some of those #ifdef checks. If the endpoints you use for both configs are mutually exclusive, you can get away with just having both built into the program and depend on the fact that the host won't try to use the endpoints which weren't mentioned in the descriptors you send.
In you decide to fully reboot Teensy, you can do that by writing to the SCB_AIRCR register. Search for that name on this forum to find threads where it's been discussed. If using Teensy 4.0, a bug affecting soft reboot was recently fixed, so look for that on this forum or github. The fix will be in 1.50 (likely starting beta next week). Not an issue if using Teensy 3.2.
The tricky part about rebooting is maintaining state. The RTC offers a small amount of memory for storing info that persists between reboots (and while power is off, if you connect the coin cell to keep the RTC going). Or you could just set the RTC date/time in various ways, as it persists across reboots.
This is all possible, but only with a pretty good amount of edits to the code. Hopefully this message will give you a good start on where to make those edits.