It really seems insurmountable at this point. Not sure what SDL is doing that's causing this. But I'm leaving this code in, because it makes things a little cleaner and serves as a good example to myself for how to render to textures.
To make this performant, the Font struct caches rendered glyphs as sdl textures. Without caching, performance is abysmal.