Does it make sense to save the hightlight ID separately from the video ID?  I see later in this code where you have to parse out the two different IDs from the $videoId string.  Something like:

    $highlightId = empty( $matches[3] ) ? null : $matches[3];
    return new static( $videoId, $highlightId );

Then just set $this->sourceId directly in the constructor rather than having getSourceID do it.