I understand the question is about the string lights.
If you intend to model the lights, as opposed to just throwing in a vault surface and adding a texture in Twinmotion, each individual light can probably be reduced to a rectangular or perhaps triangular morph face (aren't they much larger than 5 mm in reality?) –polygon count shouldn't be that high with triangular or quadrangular faces, as opposed to the prisms you are getting with complex profiles.
(You create and rotate a bunch of them, and then group, and duplicate/multiply groups. Or (I think) converting the bunch of lights to morph will give you a single multi-light morph to multiply or drag around, which for spatial rotation purposes is better than objects.)
If you were to do this tunnel more than once, or wanted to try variations in light fixture size, spacing, rotation, etc., it would be an ideal situation for scripting a very simple GDL light string. But for a quick one-off, rendering-only, in a non-GDL user, I think your approach makes sense.