Первоначально я задал этот вопрос, но, найдя ответ, обнаружил, что моя первоначальная проблема заключалась в отсутствии поддержки в С# ковариации типов возвращаемых данных унаследованных методов. Узнав об этом, мне стало интересно, какие языки действительно поддерживают эту функцию.
Я приму ответ того, кто может назвать больше.
EDIT: Джон Милликин правильно указал, что многие динамические языки поддерживают это. Чтобы уточнить:
Я ищу только статические/строго типизированные языки.