In an ideal world, you could simply speed up the startup of your app. One way to do this is to perform all the data loading/calculating logic once, and use save() or save.image() to save part or all of your global environment to an .RData file, and load that .RData file on startup of your Shiny app (in global.R).
In case that is not possible for whatever reason, I have implemented some additional config options to allow you to configure the amount of time Shiny Server will wait for your app to start up. It is on a branch though, I need to wait for code review and testing to merge it into the main repo. In the meantime you can install it with:
Josh told me about your case over e-mail and it sounds like not only would you want to have very long timeouts on startup, but also, to keep the app running even after all users leave so you don't have to pay that long startup cost again when a new user logs on. That is configurable in this build as well.
The two new config file directives are called startup_timeout and shutdown_delay. A value of -1 will make either value infinite; a positive float will be interpreted as number of seconds.
In case you have not created a config file and are just using the default, you want your config file to look like this:
site_dir /var/shiny-server/www;
log_dir /var/shiny-server/log;