Приложение падает, потому что в методе Timer_Elapsed нет никакой обработки ошибок. Код, который срабатывает по CrossConnectivity.Current.ConnectivityChanged всего лишь запускает таймер, не более.
Чтобы исключить такие проблемы, рекомендую перейти на RestEase вместо WebClient, с ним гораздно удобней работать. И вместо таймера использовать Polly, есть куча примеров как сделать красивый error handling с заданными количеством повторений запросов в случае сбоев.