Here is a link to an in depth look at boot time optimizations. https://elinux.org/images/6/64/Chris-simmonds-boot-time-elce-2017_0.pdf. I am not repeating it here as it is long. It outlines how to profile your boot speed and then how to optimize each stage of the boot process. I encourage you to use this as a reference how to start, and as you attempt optimizations, come back with more specific questions.
Another way to profile which I don't think is mentioned in the presentation is to toggle a gpio at each stage of the boot process (bootloader, kernel, userspace). Using an oscilloscope to compare the reset line and the gpio will give you a quick look at what stages take the longest, and start optimizing there.
With regards to the splash screen: The RPi may not be idling while the splash screen is present. It may for example display the splash screen during the bootloader stage and immediately start loading the linux kernel. After the boot process is finished, a virtual terminal could be displayed by the kernel.