Старорусский глагол осенить означает "закрыть", "заслонить", "перекрыть что-то чем-то. Но словосочетание "меня осенило" имеет значение "неожиданно пришло правильное решение, догадка, удачная идея". Вероятно в данном случае "осенить" значит закрыть какую-то проблему или разрешить затруднение.
Глагол "осенить" имеет разные значения, в том числе 1) покрыть защитой, 2) озарить идеей, мыслью. Выражение "меня осенило" - свободное словосочетание, а не фразеологизм, то есть оно образуется в речи говорящего по обычным законам лексической и грамматической сочетаемости (сравните: меня посетили. Тоже ведь свободно образующаяся пара слов). Нет какой-то особой истории происхождения этого словосочетания. Оно воспринимается как устойчивое, потому что используется в ограниченном контексте.