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.
Also wrapped Freetype functionality in a Font struct.