1) Конечно нужно, хранить токены крайне желательно в оперативной памяти, в NoSQL БД . Так как никакой ценности токены не несут, если потеряются, а нужна максимальная скорость.
2) Просто сравнивать, IP адрес по желанию. Учесть что за NAT несколько пользователей могут иметь одинаковый IP. Несколько токенов могут быть привязаны к одному IP.
3) Сменить пароль (точнее хеш) - удалить токен - страница авторизации-вход-выдача нового токена
4) Да придется. Нужда в "кешировании" отпадает при выполнении пункта 1.