I attempted to manually load the Schema sstables onto the new node and bootstrap it. Unfortunately when doing so, the new node believed it was already bootstrapped, and just joined the ring with zero data.

To fix (read: hack) that, I removed the following logic from StorageService.java:523:

        if (DatabaseDescriptor.isAutoBootstrap()
            && !(SystemTable.isBootstrapped()
                 || DatabaseDescriptor.getSeeds().contains(FBUtilities.getBroadcastAddress())
                 || !Schema.instance.getNonSystemTables().isEmpty()))

I replaced everything after the && with just !SystemTable.isBootstrapped(). No idea why that logic was failing, as I had zero non-system tables.

Of course, while this technically works, I'd rather not use a hacked build every time I need to bootstrap :/