I figured it out: there's absolutely nothing wrong with changing the direction of your rigidbody's velocity.
The problem was using transform.up to rotate the game object itself. I replaced that with rb.MoveRotation(rb.rotation + angle) and it's buttery smooth now.
In general, if there's anything I've learned from this project, it's that ...
In a case like this you would either want to make that a public GameManager gameManager or add a [SerializeField]above the variable and simply drag it to the slot to set it.
If you would like to keep it private you could either use a Gameobject.Find(); or something like FindObjectOfType() to set that manager in Start()
After assigning your manager when ...