Okay, I finally figured it out and most of the stuff I had tried was not needed; my issue was down to me not knowing that I needed to clear the pending IRQ from the NVIC. Basically, it boils down to the following:
//Disable systick so it won't wake the MCU up from sleep
HAL_SuspendTick();
HAL_PWR_EnableSEVOnPend();
//These two lines clear any pending RTC alarm
__HAL_RTC_ALARM_CLEAR_FLAG(&hrtc, RTC_FLAG_ALRAF);
NVIC_ClearPendingIRQ(RTC_IRQn);
//Then just proceed to set up the new alarm and go to sleep
HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BIN);
HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFE);
HAL_ResumeTick();
Of note is that the RTC alarm must be cleared before clearing the NVIC interrupt pending. Swapping them around or expecting HAL_RTC_SetAlarm_IT() to clear the alarm won't work, the NVIC interrupt won't get cleared successfully until the alarm has first been cleared.
I'm leaving this here in case someone else wants to use WFE instead of WFI with sleep and can't get it working.