Обезличенный вызов делегатов в C#

Как говорится: сидел, никого не трогал, программировал на C#, и тут родилась «хитрая» нужда. В рамках одного из своих проектов мне понадобился механизм обезличенного вызова делегатов, который бы позволил организовать их универсальные хранение и вызов. Также, главной целью разработки являлся уход от необходимости вызова методов конкретных экземпляров объектов через рефлексию (рефлексия используется только на этапе инициализации), что в конечном счете сильно увеличило производительность.
Обезличенный вызов делегата - вызов делегата с известным количеством параметров, но с неизвестными типами параметров, где каждый тип параметра представлен базовым классом Object. Пример: Action<string, int> преобразуется в Action<object, object>.