I was able to fix it by using Citizen.SetTimeout() in place of Citizen.Wait(), with the second scaleform inside like this:
Citizen.SetTimeout(2500, function()
PushScaleformMovieFunction(scaleform, "SHARD_ANIM_OUT")
PushScaleformMovieFunctionParameterInt(2)
PushScaleformMovieFunctionParameterFloat(0.33)
PopScaleformMovieFunctionVoid()
PlaySoundFrontend(-1, "1st_Person_Transition", "PLAYER_SWITCH_CUSTOM_SOUNDSET", 1)
end)
Thank you very much for the help, though - it gave me some idea of how to use the native timers, which I have no doubt will be invaluably handy.