I think that the external watchdog script with cron, as you now have, is the best solution, as it can do many things which are not hard-coded into the smstools.
Smsd can have a
child process which can do certain things, but if the whole smsd is stopped, the child is stopped too. If there is a reason to monitor if smsd is running, external watchdog is better for that. And in any case, the custom script is required.
I also have a similar problem with old Telit modems. Sometimes but fortunately rarely some of them communicates as usual, but radio connection to the SMSC stops working. Therefore an external watchdog running by cron stops the daemon every eight hours and performs a power-off-on reset to all modems, and starts the smsd again. The same watchdog also checks that all modem processes are running, and not in the "trouble" state.
Alarmhandler can also be used to create a "flag file" to the watchdog, to cause the whole reset if it seems to be necessary.