2d texture eyes that can move around freely
So it's been a couple of months now and I figured out a way to do this a while back so I figured I should post it so that anyone looking for this specific technique can use it! Here goes:

1.Select a couple of faces of the mesh where you want the eyes to be and create a split mesh from this. It should be a second "layer" for you to place the eyes texture on.

2.Create a texture for the eyes. Place the different types of eyelids (default, closed, bored, surprised...) at equal distances from eachother (this will make a later step easier) and leave enough space for the pupils. Here's what my eyes texture looks like:

3.Create 2 different UV maps for the eyes: one for the eyelids and one for the pupils. That way you can animate these seperately.

4.Now create a new material for the eyes. You will need to plug the 2 UV maps into the texture nodes and use a multiply node to overlap them. Here is how I set up the shader for the eyes:


5.Use the UV wrap modifier to rig the eyelids (youtube.com/watch?v=5NlvgMYZgaY) and an empty connected to a bone to move the pupils

To make the eyebrows, you'll want to follow the same steps, except with just one UV map and a simpler shader (be sure to have some overlap between the eye mesh and the eyebrows mesh! It's hard to make someone look angry when there's a lot of space between the 2)