Why can't I force:org:open my scratch org?
On inspection I saw that the POD (instance) on which my scratch orgs exist had been upgraded to Spring '20 on Saturday.
The only solution I could find was to delete my scratch orgs and re-create them using the original aliases. Having done this the problem went away.
I guess Spring '20 doesn't play nice with Winter '20 scratch orgs.
This issue is due to Spring '20 and can happen with new scratch orgs too. Not all sandbox pods are affected.
The event emitter warning has nothing to do with the actual problem. The underline issue is a redirect from https://..my.salesforce.com to https://.my.salesforce.com. When redirecting to a different host, authorization headers are removed which causes an invalid token problem. The CLI then tries and fetch a new token. Once we have the token, we try the API call again which does the same thing, leaving the CLI in an infinite loop (hence the CLI hanging.
Edit: As of 1/8/20, I believe this issue has been fixed for all sandbox pods. If still seeing similar problems, please comment if with what CS instance the scratch org is on.