а что-то типа foreach(var form in objects.OfType()){form.Show();} не проще? Тогда и засунуть можно в коллекцию всё, что угодно, а доставать только то, что надо.
Есть такая вещь как «преждевременная оптимизация». Вы сейчас вбухиваете силы и время в создание масштабируемой архитектуры, вы планируете, как будете управлять полутысячей mysql серверов… а проект не выстреливает и инвестиции заканчиваются где-то между VPS и первым выделенным сервером.
Почитайте про историю top4top, очень поучительно. А ещё почитайте, в какой момент твитер начал решать проблемы с переполнением Int32 как идентификатора сообщения.
Например, если ты человеку должен денег, то такая штука позволит избегать неприятных встреч. Опять-таки, если тебе должны, то появляются свои удобства.