ни в какую сторону не копать,
относительно бд, тебе нужно хранить твои ключи в отдельной таблице,
по-быстрому можно создать hl-block с 5-ю полями, типа того:
id | order_item_id (по умолч. null) | product_id | login(key) | pass
(если login(key) уникальный, то можно его использовать в качестве primary поля, выкинув id)
в заказе к элементу корзины привязываешь ключ, заполняешь order_item_id,
т.е. если order_item_id == null, то значит ключ еще не используется
а в почтовом шаблоне уже через событие дергаешь hl-block.
p.s. или можно id ключа в свойство элемента корзины класть (в принципе все тоже самое, только привязка в другой таблице, просто это менее удобно будет)