Searching for Optimal Runtime Assurance via Reachability and Reinforcement Learning