Не затормозит ли подписка на такое кол-во событий работу приложения? Ведь каждый раз надо будет проверять есть ли некоторое значение в XData объекта.
Это только экспериментальным путём. И если затормозит, то только при командах _PASTEXXX, т.к. в остальных командах этот код не работает.
Как получить в этом случае документ, откуда был скопирован объект?
Прямо - никак. Разве что у тебя где-то в Xdata или еще в чем-то, что точно копируется в буфер будет информация о том, какой это документ.