Wouldn't it make sense to attempt to read the config file before validating the data directory since the data directory can be specified in the config file?  Consider the case where bitcoind is running as a daemon user with no homedir, and it is started with a -conf=.../bitcoin.conf where bitcoin.conf specifies the datadir.  It will fail here when it is unable to create/validate ~/.bitcoin.