1. Нормально будет как внутри единого процесса крутить (с помощью какого-то
robfig/cron, к примеру), так и отдельными процессами (cron-задачами, или даже демонами). Здесь всё зависит от конкретной ситуации и того что Вам нужно. У каждого подхода свои очевидные трейд-офф'ы. Просто выбираете то, что Вам больше подходит. На кодовую базу это мало влияет, ибо всегда можно переиспользовать пакеты, да и вообще можно держать всё в едином бинарнике, просто прокинув разные CLI-интерфейсы.
2. Горутины не могут быть пошарены между несколькими серверами. Если Ваши амбиции влезут в один сервер, то на внешние очереди можно не грузиться.
3. Если речь идёт строго об одном процессе, который нельзя размножить, то смотрите в сторону
graceful updates/restarts. Если же Вы можете множить приложение (в конце-концов живём в век победившых Docker/Kubernetes), то есть более общие техники, подходящие абсолютно для любого приложения:
blue/green deployment либо
rolling update (в том же Kubernetes из-коробки).