Alright y'all, I finally solved it. I gotta be the dumbest "engineer" in history.
I had an 8MHz crystal connected to my board this whole time! I thought it was 16MHz so I set everything to 16, not 8. Strangely enough, the bootloader burnt successfully every time, but UART wasn't working since I set it to work with 16MHz, not 8 like I had on my actual hardware. I was building my circuit again on a breadboard to try to re-create the issue, and I suddenly realized this mistake. I'm going to study electrical engineering in college and I wonder how many F's I will get for simple mistakes like this one lol.
Thanks to everyone for helping out!!!