I can now confirm on 1.2.1-rc.2 that neither #1 (Some networks will cause the Xenon to disconnect and immediately reconnect several times an hour) or #2 (Some networks will cause the Xenon to disconnect and will never reconnect until the unit is power cycled), has shown any improvements.
I was able to connect and log the serial output of a device going offline and not reconnecting, my problem #2. Below is the output
[19:57:22.448287 5.175596] 0108954053 [comm.protocol] TRACE: Reply recieved: type=2, code=0
[19:57:22.461926 0.013641] 0108954054 [comm.protocol] INFO: message id 21237 complete with code 0.00
[19:57:22.475860 0.013936] 0108954055 [comm.protocol] INFO: rcv'd message type=13
[19:57:27.553103 5.077238] 0108959157 [comm.protocol] TRACE: Reply recieved: type=2, code=0
[19:57:27.569657 0.016556] 0108959158 [comm.protocol] INFO: message id 21238 complete with code 0.00
[19:57:27.584530 0.014875] 0108959159 [comm.protocol] INFO: rcv'd message type=13
[19:57:32.655909 5.071374] 0108964260 [comm.protocol] TRACE: Reply recieved: type=2, code=0
[19:57:32.670928 0.015022] 0108964261 [comm.protocol] INFO: message id 21239 complete with code 0.00
[19:57:32.685790 0.014863] 0108964262 [comm.protocol] INFO: rcv'd message type=13
[19:57:37.758134 5.072342] 0108969363 [comm.protocol] TRACE: Reply recieved: type=2, code=0
[19:57:37.775279 0.017146] 0108969364 [comm.protocol] INFO: message id 21240 complete with code 0.00
[19:57:37.790570 0.015294] 0108969365 [comm.protocol] INFO: rcv'd message type=13
[19:57:42.864894 5.074319] 0108974469 [comm.protocol] TRACE: Reply recieved: type=2, code=0
[19:57:42.878761 0.013869] 0108974469 [comm.protocol] INFO: message id 21241 complete with code 0.00
[19:57:42.893918 0.015160] 0108974470 [comm.protocol] INFO: rcv'd message type=13
[19:57:47.968239 5.074267] 0108979572 [comm.protocol] TRACE: Reply recieved: type=2, code=0
[19:57:47.982731 0.014543] 0108979573 [comm.protocol] INFO: message id 21242 complete with code 0.00
[19:57:47.997849 0.015119] 0108979574 [comm.protocol] INFO: rcv'd message type=13
[19:58:22.973421 34.975564] 0109014578 [comm.protocol] ERROR: Event loop error 1
[19:58:22.985245 0.011832] 0109014579 [system] WARN: Communication loop error, closing cloud socket
[19:58:23.000231 0.014984] 0109014580 [system] INFO: Cloud: disconnecting
[19:58:23.010027 0.009801] 0109014581 [system] INFO: Cloud: disconnected
[19:58:23.077631 0.067583] 0109014682 [system] INFO: Cloud: connecting
[19:58:23.087917 0.010306] 0109014684 [system] INFO: Read Server Address = type:1,domain:$id.udp-mesh.particle.io
[19:58:23.106103 0.018183] 0109014686 [system] INFO: Loaded cloud server address and port from session data
[19:58:23.122519 0.016420] 0109014687 [system] TRACE: Address type: 1
[19:58:23.131438 0.008918] 0109014687 [system] TRACE: Cloud socket=0, family=2, type=2, protocol=17
[19:58:23.146245 0.014807] 0109014688 [system] INFO: Cloud socket=0, connecting to 54.166.181.191#5684
[19:58:23.161701 0.015457] 0109014689 [system] TRACE: Cloud socket=0, connected to 54.166.181.191#5684
[19:58:23.177137 0.015436] 0109014691 [system] TRACE: Updating cloud keepalive for AF_INET: 30000 -> 30000
[19:58:23.193386 0.016249] 0109014692 [system] TRACE: Applying new keepalive interval now
[19:58:23.203764 0.010380] 0109014693 [system] INFO: Cloud socket connected
[19:58:23.208622 0.004858] 0109014694 [system] INFO: Starting handshake: presense_announce=0
[19:58:23.215128 0.006507] 0109014695 [comm.protocol.handshake] INFO: Establish secure connection
[19:58:23.468351 0.253217] 0109015072 [comm.dtls] WARN: session has 0 uses
[19:58:23.480950 0.012602] 0109015084 [comm.dtls] INFO: (CMPL,RENEG,NO_SESS,ERR) restoreStatus=0
[19:58:23.488124 0.007175] 0109015085 [comm.dtls] INFO: out_ctr 0,1,0,0,0,0,9,113, next_coap_id=52fb
[19:58:23.495348 0.007223] 0109015086 [comm.dtls] INFO: app state crc: cached: ad350c27, actual: ad350c27
[19:58:23.503382 0.008035] 0109015087 [comm.dtls] WARN: skipping hello message
[19:58:23.508505 0.005124] 0109015088 [comm.dtls] INFO: restored session from persisted session data. next_msg_id=21243
[19:58:23.517441 0.008936] 0109015089 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 2
[19:58:23.523864 0.006423] 0109015089 [comm.protocol.handshake] INFO: resumed session - not sending HELLO message
[19:58:23.532236 0.008373] 0109015095 [system] INFO: Send spark/hardware/max_binary event
[19:58:23.538303 0.006066] 0109015100 [system] INFO: Send subscriptions
[19:58:23.542684 0.004382] 0109015105 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 4
[19:58:23.549098 0.006413] 0109015106 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 3
[19:58:23.555480 0.006382] 0109015107 [comm] INFO: Sending TIME request
[19:58:23.559868 0.004389] 0109015111 [system] INFO: Cloud connected
[19:58:58.529353 34.969476] 0109050133 [comm.protocol] ERROR: Event loop error 1
[19:58:58.541264 0.011914] 0109050133 [system] WARN: Communication loop error, closing cloud socket
[19:58:58.556156 0.014890] 0109050134 [system] INFO: Cloud: disconnecting
[19:58:58.565837 0.009686] 0109050136 [system] INFO: Cloud: disconnected
[19:58:58.632101 0.066260] 0109050236 [system] INFO: Cloud: connecting
[19:58:58.643446 0.011317] 0109050239 [system] INFO: Read Server Address = type:1,domain:$id.udp-mesh.particle.io
[19:58:58.661698 0.018283] 0109050240 [system] INFO: Loaded cloud server address and port from session data
[19:58:58.678178 0.016480] 0109050241 [system] TRACE: Address type: 1
[19:58:58.687097 0.008919] 0109050242 [system] TRACE: Cloud socket=0, family=2, type=2, protocol=17
[19:58:58.697830 0.010736] 0109050243 [system] INFO: Cloud socket=0, connecting to 54.166.181.191#5684
[19:58:58.705292 0.007463] 0109050244 [system] TRACE: Cloud socket=0, connected to 54.166.181.191#5684
[19:58:58.712765 0.007472] 0109050245 [system] TRACE: Updating cloud keepalive for AF_INET: 30000 -> 30000
[19:58:58.720607 0.007842] 0109050246 [system] TRACE: Applying new keepalive interval now
[19:58:58.726785 0.006179] 0109050248 [system] INFO: Cloud socket connected
[19:58:58.731660 0.004875] 0109050248 [system] INFO: Starting handshake: presense_announce=0
[19:58:58.738318 0.006657] 0109050250 [comm.protocol.handshake] INFO: Establish secure connection
[19:58:59.022225 0.283903] 0109050627 [comm.dtls] WARN: session has 1 uses
[19:58:59.035123 0.012901] 0109050640 [comm.dtls] INFO: (CMPL,RENEG,NO_SESS,ERR) restoreStatus=0
[19:58:59.042901 0.007779] 0109050641 [comm.dtls] INFO: out_ctr 0,1,0,0,0,0,9,139, next_coap_id=5303
[19:58:59.050296 0.007395] 0109050642 [comm.dtls] INFO: app state crc: cached: ad350c27, actual: ad350c27
[19:58:59.058113 0.007817] 0109050643 [comm.dtls] WARN: skipping hello message
[19:58:59.063610 0.005496] 0109050644 [comm.dtls] INFO: restored session from persisted session data. next_msg_id=21251
[19:58:59.072836 0.009226] 0109050646 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 2
[19:58:59.079310 0.006476] 0109050647 [comm.protocol.handshake] INFO: resumed session - not sending HELLO message
[19:58:59.087852 0.008541] 0109050651 [system] INFO: Send spark/hardware/max_binary event
[19:58:59.094059 0.006208] 0109050660 [system] INFO: Send subscriptions
[19:58:59.098532 0.004473] 0109050664 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 4
[19:58:59.105024 0.006490] 0109050665 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 3
[19:58:59.111522 0.006499] 0109050666 [comm] INFO: Sending TIME request
[19:58:59.116081 0.004560] 0109050668 [system] INFO: Cloud connected
[19:59:34.087462 34.971369] 0109085702 [comm.protocol] ERROR: Event loop error 1
[19:59:34.098943 0.011487] 0109085702 [system] WARN: Communication loop error, closing cloud socket
[19:59:34.114131 0.015188] 0109085702 [system] INFO: Cloud: disconnecting
[19:59:34.123698 0.009569] 0109085704 [system] INFO: Cloud: disconnected
[19:59:34.189565 0.065866] 0109085804 [system] INFO: Cloud: connecting
[19:59:34.200108 0.010529] 0109085806 [system] INFO: Read Server Address = type:1,domain:$id.udp-mesh.particle.io
[19:59:34.217989 0.017897] 0109085808 [system] INFO: Loaded cloud server address and port from session data
[19:59:34.234151 0.016162] 0109085809 [system] TRACE: Address type: 1
[19:59:34.242825 0.008674] 0109085812 [system] TRACE: Cloud socket=0, family=2, type=2, protocol=17
[19:59:34.257104 0.014281] 0109085812 [system] INFO: Cloud socket=0, connecting to 54.166.181.191#5684
[19:59:34.264480 0.007377] 0109085812 [system] TRACE: Cloud socket=0, connected to 54.166.181.191#5684
[19:59:34.271806 0.007325] 0109085814 [system] TRACE: Updating cloud keepalive for AF_INET: 30000 -> 30000
[19:59:34.279480 0.007674] 0109085814 [system] TRACE: Applying new keepalive interval now
[19:59:34.285588 0.006109] 0109085816 [system] INFO: Cloud socket connected
[19:59:34.290369 0.004780] 0109085816 [system] INFO: Starting handshake: presense_announce=0
[19:59:34.296737 0.006368] 0109085816 [comm.protocol.handshake] INFO: Establish secure connection
[19:59:34.583917 0.287177] 0109086198 [comm.dtls] WARN: session has 2 uses
[19:59:34.596557 0.012642] 0109086211 [comm.dtls] INFO: (CMPL,RENEG,NO_SESS,ERR) restoreStatus=0
[19:59:34.604012 0.007455] 0109086211 [comm.dtls] INFO: out_ctr 0,1,0,0,0,0,9,167, next_coap_id=530b
[19:59:34.611248 0.007237] 0109086213 [comm.dtls] INFO: app state crc: cached: ad350c27, actual: ad350c27
[19:59:34.619269 0.008021] 0109086213 [comm.dtls] WARN: skipping hello message
[19:59:34.624531 0.005262] 0109086213 [comm.dtls] INFO: restored session from persisted session data. next_msg_id=21259
[19:59:34.633476 0.008945] 0109086215 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 2
[19:59:34.639865 0.006389] 0109086215 [comm.protocol.handshake] INFO: resumed session - not sending HELLO message
[19:59:34.648193 0.008328] 0109086221 [system] INFO: Send spark/hardware/max_binary event
[19:59:34.654301 0.006108] 0109086229 [system] INFO: Send subscriptions
[19:59:34.658680 0.004379] 0109086231 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 4
[19:59:34.665071 0.006392] 0109086233 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 3
[19:59:34.671470 0.006398] 0109086233 [comm] INFO: Sending TIME request
[19:59:34.675842 0.004372] 0109086236 [system] INFO: Cloud connected
[20:00:09.643954 34.968057] 0109121258 [comm.protocol] ERROR: Event loop error 1
[20:00:09.655430 0.011526] 0109121258 [system] WARN: Communication loop error, closing cloud socket
[20:00:09.670719 0.015290] 0109121258 [system] INFO: Cloud: disconnecting
[20:00:09.680432 0.009715] 0109121260 [system] INFO: Cloud: disconnected
[20:00:09.744860 0.064426] 0109121360 [system] INFO: Cloud: connecting
[20:00:09.754951 0.010093] 0109121365 [system] INFO: Read Server Address = type:1,domain:$id.udp-mesh.particle.io
[20:00:09.773972 0.019020] 0109121367 [system] INFO: Loaded cloud server address and port from session data
[20:00:09.790513 0.016538] 0109121367 [system] TRACE: Address type: 1
[20:00:09.799315 0.008806] 0109121370 [system] TRACE: Cloud socket=0, family=2, type=2, protocol=17
[20:00:09.814452 0.015132] 0109121370 [system] INFO: Cloud socket=0, connecting to 54.166.181.191#5684
[20:00:09.830071 0.015621] 0109121372 [system] TRACE: Cloud socket=0, connected to 54.166.181.191#5684
[20:00:09.845565 0.015496] 0109121372 [system] TRACE: Updating cloud keepalive for AF_INET: 30000 -> 30000
[20:00:09.861880 0.016316] 0109121374 [system] TRACE: Applying new keepalive interval now
[20:00:09.873058 0.011180] 0109121374 [system] INFO: Cloud socket connected
[20:00:09.877893 0.004835] 0109121374 [system] INFO: Starting handshake: presense_announce=0
[20:00:09.884410 0.006517] 0109121376 [comm.protocol.handshake] INFO: Establish secure connection
[20:00:10.138194 0.253780] 0109121752 [comm.dtls] WARN: session has 3 uses
[20:00:10.143690 0.005498] 0109121752 [comm.dtls] WARN: session has expired after 3 uses
[20:00:10.149727 0.006039] 0109121754 [comm.dtls] INFO: (CMPL,RENEG,NO_SESS,ERR) restoreStatus=2
[20:00:10.156511 0.006785] 0109121754 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 4
[20:00:19.148258 8.991738] 0109130763 [comm.dtls] ERROR: handshake failed -6800
[20:00:19.160151 0.011896] 0109130765 [comm.protocol.handshake] ERROR: handshake failed with code 17
[20:00:19.175220 0.015070] 0109130767 [system] WARN: Cloud handshake failed, code=17
[20:00:19.402043 0.226821] 0109131017 [system] INFO: Cloud: disconnecting
[20:00:19.412344 0.010303] 0109131017 [system] INFO: Cloud: disconnected
[20:00:20.204445 0.792097] 0109131819 [system] INFO: Cloud: connecting
[20:00:20.214738 0.010297] 0109131821 [system] INFO: Read Server Address = type:1,domain:$id.udp-mesh.particle.io
[20:00:20.232525 0.017787] 0109131823 [system] ERROR: Failed to load session data from persistent storage
[20:00:20.248537 0.016014] 0109131823 [system] INFO: Discarding session data
[20:00:20.258822 0.010285] 0109131825 [system] TRACE: Resolving e00fce68f8cf6601fa0e2fce.udp-mesh.particle.io#5684
[20:00:36.165056 15.906209] 0109147777 [system] ERROR: Failed to determine server address
[20:00:36.178405 0.013368] 0109147779 [system] TRACE: Address type: 3
[20:00:36.187352 0.008951] 0109147779 [system] WARN: Cloud socket connection failed: -230
[20:00:36.200257 0.012906] 0109147780 [system] WARN: Internet available, Cloud not reachable!
[20:00:36.213880 0.013623] 0109147781 [system] WARN: Handling cloud error: 3
[20:00:37.166293 0.952408] 0109148781 [system] INFO: Cloud: connecting
[20:00:37.179818 0.013526] 0109148783 [system] INFO: Read Server Address = type:1,domain:$id.udp-mesh.particle.io
[20:00:37.197521 0.017703] 0109148785 [system] ERROR: Failed to load session data from persistent storage
[20:00:37.213590 0.016072] 0109148785 [system] INFO: Discarding session data
[20:00:37.223874 0.010286] 0109148786 [system] TRACE: Resolving e00fce68f8cf6601fa0e2fce.udp-mesh.particle.io#5684
[20:00:53.165114 15.941234] 0109164777 [system] ERROR: Failed to determine server address
[20:00:53.178446 0.013335] 0109164779 [system] TRACE: Address type: 3
[20:00:53.187363 0.008920] 0109164779 [system] WARN: Cloud socket connection failed: -230
[20:00:53.200262 0.012899] 0109164780 [system] WARN: Internet available, Cloud not reachable!
[20:00:53.213907 0.013644] 0109164781 [system] WARN: Handling cloud error: 3
[20:00:54.166369 0.952455] 0109165781 [system] INFO: Cloud: connecting
[20:00:54.176723 0.010358] 0109165784 [system] INFO: Read Server Address = type:1,domain:$id.udp-mesh.particle.io
[20:00:54.194446 0.017725] 0109165784 [system] ERROR: Failed to load session data from persistent storage
[20:00:54.210439 0.015994] 0109165786 [system] INFO: Discarding session data
[20:00:54.220771 0.010332] 0109165787 [system] TRACE: Resolving e00fce68f8cf6601fa0e2fce.udp-mesh.particle.io#5684
[20:01:10.164885 15.944089] 0109181777 [system] ERROR: Failed to determine server address
[20:01:10.178203 0.013341] 0109181779 [system] TRACE: Address type: 3
[20:01:10.187153 0.008952] 0109181779 [system] WARN: Cloud socket connection failed: -230
[20:01:10.200058 0.012906] 0109181781 [system] WARN: Internet available, Cloud not reachable!
[20:01:10.213685 0.013626] 0109181781 [system] WARN: Handling cloud error: 3
[20:01:11.166386 0.952658] 0109182781 [system] INFO: Cloud: connecting
[20:01:11.176607 0.010262] 0109182783 [system] INFO: Read Server Address = type:1,domain:$id.udp-mesh.particle.io
[20:01:11.194373 0.017767] 0109182785 [system] ERROR: Failed to load session data from persistent storage
[20:01:11.210509 0.016137] 0109182785 [system] INFO: Discarding session data
[20:01:11.220768 0.010259] 0109182788 [system] TRACE: Resolving e00fce68f8cf6601fa0e2fce.udp-mesh.particle.io#5684
[20:01:27.164549 15.943777] 0109198777 [system] ERROR: Failed to determine server address
[20:01:27.178135 0.013589] 0109198779 [system] TRACE: Address type: 3
[20:01:27.187000 0.008866] 0109198779 [system] WARN: Cloud socket connection failed: -230
[20:01:27.199667 0.012666] 0109198781 [system] WARN: Internet available, Cloud not reachable!
[20:01:27.213103 0.013437] 0109198783 [system] WARN: Handling cloud error: 3
[20:01:28.168942 0.955832] 0109199783 [system] INFO: Cloud: connecting
[20:01:28.179007 0.010070] 0109199785 [system] INFO: Read Server Address = type:1,domain:$id.udp-mesh.particle.io
[20:01:28.196394 0.017388] 0109199786 [system] ERROR: Failed to load session data from persistent storage
[20:01:28.212238 0.015844] 0109199787 [system] INFO: Discarding session data
[20:01:28.222481 0.010243] 0109199790 [system] TRACE: Resolving e00fce68f8cf6601fa0e2fce.udp-mesh.particle.io#5684
[20:01:44.164588 15.942062] 0109215777 [system] ERROR: Failed to determine server address
[20:01:44.178016 0.013473] 0109215779 [system] TRACE: Address type: 3
[20:01:44.186857 0.008841] 0109215779 [system] WARN: Cloud socket connection failed: -230
[20:01:44.199630 0.012773] 0109215781 [system] WARN: Internet available, Cloud not reachable!
[20:01:44.213194 0.013565] 0109215783 [system] WARN: Handling cloud error: 3
[20:01:46.169157 1.955961] 0109217783 [system] INFO: Cloud: connecting
[20:01:46.173825 0.004672] 0109217787 [system] INFO: Read Server Address = type:1,domain:$id.udp-mesh.particle.io
[20:01:46.182653 0.008827] 0109217787 [system] ERROR: Failed to load session data from persistent storage
[20:01:46.190432 0.007780] 0109217789 [system] INFO: Discarding session data
[20:01:46.195308 0.004877] 0109217790 [system] TRACE: Resolving e00fce68f8cf6601fa0e2fce.udp-mesh.particle.io#5684