I'm not sure if I understood your requirement correctly

. Please correct me.
Your smsd should know if a remote server is available, and if it's not, no more messages are received, right?
In the SIM or ME, there might be some 30 or 50 slots available for messages. If your smsd stops receiving, the memory will be fillfulled soon. After this, messages will stay in SMSC for a while and I think that this is not good, for example because delivery reports to the sender are not sent, and you cannot know the validity period (some messages can be lost forever). After all, you will have two kind of problematic messages: received but unprocessed, and messages which are not even received...
I think that you could receive any incoming messages, at any time. In the eventhandler, you can check if the remote server is reachable, and process the message with it. It it's not reachable, or the processing has failed, move the message to the
failed_remote_server folder. At the same time, you can create an administrative message, SMS and/or e-mail to the administrator, which can detect and resolve the failure.
Then you can have a script, using cron or regular_run, to check the content of
failed_remote_server folder. If there are any messages, they can be re-processed, and so on. This same script could check the outgoing queue on a remote server and pick up a messages.