A colleague and I came up with the following solution which seems simple enough and works well. We simply overrode the start() task of our frontdoor class like so :
class my_frontdoor extends uvm_reg_frontdoor.......
task start(uvm_sequencer_base sequencer,
uvm_sequence_base parent_sequence = null,
int this_priority = -1,
bit call_pre_post = 1);
Ideally I would have liked to override the pre/post_start() hooks but suprisingly the pre_start is already called too late ( after the UVM_FATAL already fires).