The particular area of trunking.py that handles the type types of holds (soft vs hard) and their timers is tortured and risky to modify without extensive testing. There is also an oddity that the terminal won't update it's Talkgroup ID display unless a frequency update message is triggered (usually by retuning back to the control channel). Taken together, implementing your request is remarkably challenging for what should be a simple change (i.e. delaying the nulling of self.current_tgid).
Feel free to hack around and see if you can make it work properly. The bolded line is what causes the Talkgroup ID to disappear.
trunking.py
if self.current_state != self.states.CC and self.tgid_hold_until <= curr_time and self.hold_mode is False and new_state is None:
if self.debug > 1:
sys.stderr.write("%f release tg(%s)\n" % (time.time(), self.current_tgid))
self.tgid_hold = None
self.current_tgid = None
self.current_srcaddr = 0
self.current_grpaddr = 0
self.current_encrypted = 0
new_state = self.states.CC
new_frequency = tsys.trunk_cc
elif self.wait_until <= curr_time and self.tgid_hold_until <= curr_time and self.hold_mode is False and new_state is None:
self.wait_until = curr_time + self.TSYS_HOLD_TIME
self.current_srcaddr = 0
self.current_grpaddr = 0
self.current_encrypted = 0
new_nac = self.find_next_tsys()
new_state = self.states.CC