Перечитал статью в 6ой раз. Заметил наконец в чем прикол - вместо GetObject используется Open.
Теперь не сбоит. Хотя где-то я точно видел, что использует народ именно ObjectId.GetObject... Не сам же я такое придумал
Итого для открытия только на чтение:
Одна транзакция - не более 0.01сек
448 транзакций с коммитом - 0.34сек
Без транзакций вообще - 0.29сек
Вывод: для массовых процедур транзакцию надо открывать и надо передавать во все функции. Вооот