Technically, we have railway poles in the form of foundation columns. It's not pretty but they sort of serve the purpose. And they definitely allow making train-truck crossings in the form of elevating the rail so the truck can pass under it.
What we actually need - at least I believe - is ability to attach rail endpoints at any valid slope, not just slope given by the terrain or the foundation/ramp used. If railway poles came with this feature, it'd be great. Without it, they'd be just aesthetical variant to foundations.
I agree there's some struggle with using trains since they lack many abilities the real trains have. In particular ability to rearrange freight cars in the train or to move them between trains. While it is possible to make a train carry multiple different materials in different freight cars, you need to design a set of stations just for such train so that they fill/empty the cars appropriately. It's impossible to carry multiple resources in a car and only unload one of them in the station, it's impossible to use a car for different resources in sequence and to make sure it's empty before loading a different resource. The system lacks flexibility.
Personally I found the best utility in using single purpose trains - one enegine, one car, dedicated to single resource. It unfortunately means I need a lot of stations with just one freight platform, and a production line that converts four materials into one needs five such stations which definitely takes a LOT of space, sometimes more space than what the production line needs itself. The other problem with this system is that trains will keep executing their timetables blindly, regardless whether the delivery is or isn't needed. As result, my base is full of fast moving trains doing nothing useful and I can't even see if there's any problem in the production because it doesn't affect their pattern. Not mentioning they waste power.
What I'd like to have is some sort of demand-driven delivery planning. Having a pool of generic trains and stations dedicated to set materials, either for sending or for receiving. By default trains would just sit at some parking spot. Only when a there's need for a resource at some receiving platform, a train would pick some suitable sending platform with that resource and perform the delivery, returning to the parking spot if there's no further work for it.