A quick post in case someone else runs into this: by default, RHEL's tftp-server package creates /tftpboot with an SELinux context of system_u:object_r:tftpdir_t. That works great, until you need to actually upload something. To enable uploading, you have to change the context to system_u:object_r:tftpdir_rw_t. To do so, run the following command as root:
chcon -R system_u:object_r:tftpdir_rw_t /tftpboot
As far as I can tell, this is completely undocumented.