UV flipping material
Here is what I came up with: 


A bone, parented to the character's head bone, that points at the camera using the "Track to" bone constraint
A value input in the material node setup with a driver applied, driven by the rotation of the camera tracking bone
If the rotation of the camera tracking bone is negative, flip the UVs.





I use a "less than" node to threshold the value to 0 or 1 depending on if the rotation of the camera tracking bone is positive or negative (i.e. if the camera is viewing the left or right side of the face). Then the other math nodes change those thresholded values to either -1 or 1, which when multiplied with the x value of the UV input will either flip the UVs or do nothing.

I hope this crazy thing proves helpful to someone else!