Okay, well, I seem to have fixed it for now. Though I'm not entirely sure what did it. I setup a loopback with snd-aloop instead of using a null sink in pulse. I then tried to record from that via "-f alsa -i hw:3,1". That worked, and the audio was being recorded at the correct rate, but it still wasn't good. On the old avconv from the ubuntu repo, I received a single "Alsa buffer xrun" error at the beginning of the recording, and from that point onward my audio was exactly two seconds ahead of my audio. On both the ffmpeg and avconv compiled from source, I had many more of those errors. I then added several libraries via apt-get and the ubuntu repository: libxvidcore-dev, libx264-dev, x264, libffms2-2. I know all of you are likely using versions of those compiled from source, as that is what the ffmpeg guide posted here said to do. After a while I tried just using "-f alsa -i pulse" again but with the new alsa loopback, and that worked better. I thought during my 1.5 hour recording that I was using the avconv version that I compiled, but I was actually using the old version from the repo. Both of my compiled versions seem to not run very well, but that's likely because I'm not using the most recent versions of some libraries. I have no idea.
My steps to get this working were (without the braces):
I think pulseaudio should recognize the new "card" immediately, though you may need to --kill and --start it.
$sudo modprobe snd-aloop
I then used pavucontrol to mix the audio streams. Any application you want to capture audio from, you tell it to use the combined sink. Anything you don't want to be captured you just send straight to your own sound card.
$pactl load-module module-combine-sink slaves=[my actual soundcard's sink name],[the loopback's sink name]
$pactl load-module module-loopback sink=[loopback sink name] source=[pulse's source name for my microphone]
I then used the following command to actually record:
In theory it should work as well to use "-f pulse -i [loopback's pulse name]".
$avconv -f x11grab -r 30 -s hd1080 -i :0.0 -f alsa -i pulse -s hd720 -acodec libmp3lame -b 1024k -vcodec libx264 -ar 44100 /tmp/cake.mp4
I'm not really entirely sure if it was the alsa loopback, or the libraries I added/updated, but it seems to be holding for now, and pulse is too temperamental for me to try prodding at it until it breaks again.
Edit: I don't believe it was the libraries, as I was previously having issues even recording .wavs, and none of those video codec updates should have affected that at all.
I realize what I did was extremely sloppy, but it seems to work for me, so I'm just posting it here. I also realize what I did may not actually help anyone since you're all using ffmpeg, but it may, and the commands are the exact same aside from replacing avconv with ffmpeg.
Tomorrow I'll try testing to see what exactly I did helped solve the issue.