I think that the problem is likely to be that HAL components run in two stages. First there is the setup which parses inputs, and then it goes in to realtime mode, where fixed things happen every servo thread.
To re-initialise you would need to re-load the module. This is possible with unload / loadrt, but all the HAL connections would need to be re-made too.
If all your mb2hal were to be located in a separate HAL file, you can unload mb2hal and then run just that hal file to re-make the connections.
I would never argue that this was an _elegant_ approach.