Why not right after you call MediaPlayer.Play(soundtrack); then just call your spawnStuff() method immediately after?
if your song doesn't start immediately and if that is your problem, then you can store a field to keep track of the time since you called your Play(soundtrack) method and if you load up your song in any player you can take note of how many seconds after play that you want your spawnStuff() to happen. Once you know how many seconds, then you can check your stored field until it reaches that many seconds, then call your spawnStuff() like so.
float milliseconds = 0f;
bool isSpawnStuffCalled = false;
public void Update(GameTime gameTime) {
//this starts counting so put this line just after you call your MediaPlayer.Play(soundtrack)
milliseconds += gameTime.ElapsedGameTime.Milliseconds;
//this is how you can check how many seconds passed, each 1000 milliseconds is equal to 1 second of course :)
if(isSpawnStuffCalled == false)
{
if(milliseconds > 5000) {
spawnStuff();
}
}
}
public void SpawnStuff()
{
//set the boolean so that your spawnStuff doesn't happen over and over forever
isSpawnStuffCalled = true;
//do your spawn stuff here
}