I had the opportunity to do an internship at NIH previous summers, so I might be able to give you some advice.
After you submit your application, you want to send an email to research advisors or research mentors you're interested in working with. You'd ideally want your application to be in by the beginning of January and want to start sending emails throughout January. The earlier you have things complete, the better. Most labs only take 1-2 summer students, and most of these positions fill up in Jan.
It is definitely not too late to apply. My first summer at NIH, I reached out to 50+ labs in the beginning of March, because I had recently found out about the internship program through a friend. By that time, most labs had already secured their summer students. Even if you don't have your applications and emails sent by January, it's not impossible to get an internship. However, the process will be made infinitely times more difficult.
My email had the following essential pieces of information: I first introduced myself, my university, and what I was studying. I also told them I was an applicant for the NIH SIP program; I specified this because there are many research programs offered at NIH. After, I talked about their research, why it was interesting to me, and how it related to my future goals/career aspirations. Then, I asked them for a time they were available to talk about their work and potential projects they might have for summer undergraduate students. I also attached my resume.