Я не сделал ничего конкретного по этому поводу, но из моего опыта работы с Interop .NET очень хорошо оптимизирован, и обычно при каждом вызове взаимодействия с Win API или COM вводятся нано-секунды, что незначительно. ADO Recordset будет обрабатываться так же, как и любые другие COM-объекты, созданные в неуправляемой куче, и под капотом находится адрес IntPtr, с которым они имеют дело.
Собственная библиотека фреймворка .NET и ее сборщик мусора намного лучше, чем в VB. Я полагаю, что переписывание некоторого старого кода VB в .NET может дать вам прирост производительности, по крайней мере, достаточный для того, чтобы игнорировать издержки взаимодействия. Лучше всего, если вы оснастите себя инструментом профилирования и будете непрерывно следить за производительностью по мере миграции реализации по частям.