Why does the ball continue in the same direction instead of changing?

launchAngle = new Vector3(Random.Range(transform.position.x - 1, transform.position.x + 1), 0, Random.Range(transform.position.z - 1, transform.position.z + 1));

The code will constantly take the launch angle and then addForce it to the rigid body but for some reason when it starts rolling it continues applying force in the same direction even if it changes direction by bouncing off a wall or something.

For your code to work correctly, you need to set launchAngle relative to your object, that is, regardless of its position in space, like this:

launchAngle = new Vector3(Random.Range(- 1, 1), 0, Random.Range(- 1, 1));