Watchdog System for Arduino GSM

I'm only going to focus on the software reset method.
It is true that there is an 8 second limit. However, you could set the limit at say 2 seconds, then every one second reset it until 20 seconds has elapsed. Once you stop resetting it, the watch dog timer will activate a reset after the expiry time.

This example demonstrates this: Arduino Watchdog Timer (WDT) Example Code | Big Dan the Blogging Man