At the time I posted this topic I had both facade mode and defer javascript checked in the settings. After thinking a bit about how W3 Total Cache specifies what it applies “defer” to, I decided to remove your defer javascript option and leave facade mode on. That seems to have fixed the issue.
So for anyone who’s using W3 Total Cache with javascript found in </head> using defer and javascript found in </body> using async, turn off this extension’s “Defer Javascript” option as it seems to not work well with W3.