Have got this working a bit better now. I spotted the following line in adb logcat which occurs when I call StartResolutionForResult to resolve the initial SIGN_IN_REQUIRED connection failure:
W/ActivityManager( 1022): Activity is launching as a new task, so cancelling activity result.
Looks like the problem was being caused by the LaunchMode setting on my MainActivity:
Removing this results in MainActivity::OnActivityResult receiving an OK resultCode instead of Canceled.