AWOL's guidance on avoiding delay() is the best advice you'll hear.
One way to accomplish what you're after is to use the Run library:https://github.com/billroy/run
-- there's an example of blinking two LEDs there.
After some practice you start thinking in terms of the pattern of breaking your program into parts that can happily run periodically.
The only problem I see is, for example, in flickering the light. It will need certain delays in it to get the proper flicker effect, so this will slow it down enough to stop the cars and other activities on the train layout. If I was going to just turn things on or off, I could see this working, but do have more control of speeds etc. I don't understand how it can work. That's why I had thought maybe a Propeller with the multiple cores since I'm not heavily invested in Arduino at this point.
Seems like no matter what technique, I'd be stuck with:
Flicker light by using a loop to fade it up and down
Exit loop and move the car
Enter another loop to manipulate the servo