Just so you know I will be pushing an update tomorrow morning, that will make your task a little easier
I will add BoardSource to the SeatChangeData, and also call the event on the character, rather than just the BoardSource alone. This will allow you to register OnSetSeat with either the BoardSource or the character in question and use the BoardSource direct from the data coming from the event. This will save you getting the parent BoardSource of the seat. Or by using the method of getting the Board ability and grabbing the BoardSource from that.
I am glad you raised this question as it gave me the idea to expand further for more versatility, cheers