Boa tarde Hoan,
é possível implementar um tratamento como o que você necessita. Sugiro ao iniciar a aplicação você abra a SplashScreen, e que ela possua uma referência do seu formulário
principal (seu MDI Parent). No evento Load da SplashScreen crie instâncias dos formulários que você deseja carregar e armazene estas instâncias no form principal, posteriormente quando o usuário quiser acessar um desses formulários
secundários, basta invocar o método "Show" das instâncias que você já armazenou.
Quanto ao Access, a idéia é a mesma, mas carregue os dados das tabelas desejadas em um DataSet (que representa uma base de dados em memória).
Lhe expliquei a idéia, mas como você disse que é novato em C#, creio que leverá um tempo considerável pesquisando formar de implementar este conceito.
Abraços,
Daniel Cheida de Oliveira