How should I light a procedurally generated level?

You can try light function, this way 1 light can simulate 2-3. Or you can bake light intensity information into texture in max/maya, then use material with it as mask for emmisive channel.

For your game i would go with baked lights into texture per modular mesh. then I would make blueprints that have trigger and 1 dynamic light that is turned only when player is nearby (for shadows only), other lights would be faked with texture.

Ps. I am not sure but there may be method for baking all lights in unreal, then saving textures for use in runtime. This would give you most accurate results.