What is the best way to do an initial loading screen?

Create your own game instance class and implement the Init event.
That will let you create the loading widget without waiting for a map to load.

To create an animated loading screen, add a throbber, hide it by setting its alpha to zero, then use Event Tick to cycle through the textures you wish to animate.
This is how I created the walking animation for the Ground Branch loading screen without making a new UMG widget in C++.