WIP datasources: Add support for specifying multiple datasources

WIP

If multiple sources are specified, the first available source is used.
This was to make sure that a misconfigured datasource with a long timeout wouldn't hold up the entire process. Even if all hell breaks loose in that goroutine, this function will exit after datasourceTotalTimeout.