Hi Steve,
A very interesting query and one that I must admit needs quite a bit of thought and inventiveness. There are some limitations and little quirks but in general I have generally found a solution to the analysis of culverts, one way or another.
You are quite right that a major limitation is that you can only use design beams, to assign section properties, to longitudinal/transverse members, and these can only exist in the xy plane. Using design sections, to represent the section properties, removes this limitation but even if you have defined design beams to design the walls, slab and base you have the problem of getting the analysis moments back to the design beam load effects tables.
There is a solution to this but again there are some small limitations. The way to do this is to define your box frame in the vertical YZ plane and then create four virtual members each representing the four sides of the box. When the analysis is complete then the results of the composite members can be exported (via the transfer results form) to an .sld file which can be read directly into the design beam tables. The only limitation is that the moments transferred have to be MY moments so the orientation of the vertical virtual member axes is important. Unfortunately I don't believe there is a way to "twist" the virtual member axes (as you can do for ordinary beam members) so that is why I have suggested that the frame be created in the yz plane as this means the default virtual member axes are then orientated correctly. The only other issue is that when you transfer the results of a vertical VM to an sld file the location along the length of the beam is not correct (a very small value). This means that when you import this to the design beam you will get an warning message saying that the length of the virtual member does not agree with the design beam length. However, the default behaviour is the stretch the length out to make them agree and everything is then fine.
With regards to generating variable loads in a spreadsheet and importing them into the analysis loading tables, I would agree that this is quite a limitation and I don't believe there is an easy way at present.
However, if you build a 3D model so that the deck is a grillage of FE then the vehicle load optimisation is a good way to generate the vehicle loads for you. I generally prefer an FE model for this as any soil pressure loading can either be added as a series of hydrostatic loads on the walls to get an appropriate pressure profile or soil springs attached to each node in the walls. Skewed culverts are also dealt with more readily You can create virtual members of the finite element instead of beam members so the process I described earlier can be used to take the results into the design beams. Again, the only limitation is that the culvert walls should lie in a vertical XZ plane
Below is one image from my example model - I also attach a pdf file showing some additional images with comments

I hope this is helpful and if this has answered your query then please mark this post as a solution so that others may benefit.
Kind regards
Dave Geeves