jti нужен совсем не для этого, а для того, чтоб защищать от replay атак.
Весь смысл JWT — не лезть в базу для проверки токена, а просто проверить подпись. Если возникает желание хранить ключи в базе — скорее всего JWT вам просто не подходит.
>Если мы будем хранить токены в реляционной БД, то получим слишком большие временные издержки, так как нам при каждом запросе в систему нужно будет сделать FULL SCAN таблицы с пользователями,
Почему нельзя просто добавить индекс?
Так и не понял, в чем смысл использования UUID вместо простого рандомного массива байт?
Каким образом его легче подобрать если uuid v4 точно так же генерируется случайным образом и в нем *меньше* энтропии, чем в рандомном массиве байт такой же длинны?