Мне кажется, что проблема в том, что вы пытаетесь использовать исключения для сообщения о неисключительном событии. Это не совсем то, для чего нужны исключения, и, конечно, когда вы ожидаете, что исключение пройдет через стороннюю библиотеку, вы не должны полагаться на то, что эта библиотека будет вести себя каким-то конкретным образом в отношении этого исключения.
Можете ли вы просто хранить где-нибудь список строк-сирот, например, глобально, и добавить к нему всякий раз, когда вы сталкиваетесь с одним из ваших операций объединения? Затем, после завершения EtlProcess, просто распечатайте список. Вы можете также рассмотреть возможность использования log4net для достижения этой цели. Или даже просто поднять событие, на которое вы подписываетесь в другом месте и делаете все, что кажется подходящим.