IrCOMM and OBEX are both protocols that run on IrLAP and IrLAP runs on the SIR layer. OBEX and IrCOMM are functionally different, OBEX is much like HTTP (request/response) and IrCOMM emulates a serial port over IR. To write an IrCOMM-OBEX translator would be like writing a terminal application using HTTP. Think of Empire as a web server, not a terminal or telnet session. All it listens for is requests, and if the request has the right format (filename), then it accepts the data (fids) and performs an action with those fids. Look at the source code for Empire, it's really very simple.
In order to switch between the two protocols, you would need to tell Empire to stop listening for OBEX objects and now listen for an IrCOMM connection. You could do this by binding to Hijack, or writing Empire to listen for a "quit" OBEX object. Then you could start another program (or Empire could be enhanced with getty) that would start an IrCOMM connection on the IR port. Then, when your session ends, it would go back to listening for OBEX objects again.