А в чём собственно проблема в преобразовании на лету?
Преобразование делать в любом случае, так что рано или поздно доведёте свои регулярки до правильного состояния. Что там "пойдёт насмарку", если вы в механизм, понимающий только bb-коды, не передадите атрибуты data, в упор непонятно.
Пробегитесь заранее по своей табличке новостей своим преобразатором, и проконтролируйте результат хотя бы выборочно хотя бы визуально (если заморочиться, поищите или напишите какой-нибудь bb-линтер).
Если проблема в ресурсах на преобразование, то да, либо используйте доп. поле как кеширующее, либо какие-то другие кеширующие средства.
По-другому, в общем-то, никак эта "проблема" не решается.