In case anyone from Square reads this or finds this thread through searching for this same issue, I figured it out.

There is definitely a bug in the app and it depends on time synchronization between the client and the server. I disabled network time updates on my phone and haven't had the app unregister on me in 5 days.

What I think was happening is that I regularly flip wifi networks, including a work network that has its own network time server that has a SLIGHTLY different time than the one you normally get. I realized that the times that I wasn't unregistering were weekends when I wasn't hopping on that work wifi.

Please fix the app, this is very frustrating.