You are correct, that replacing an existing build with a new one requires you to create a new Fleet. However, you don't necessarily need to replace the fleet ID in your backend systems (such as AWS Lambda), if you use a Fleet Alias. With an alias, you can reference the alias in your Lambda function instead, and just change the fleet that the alias references.
Another option is to register your fleet to a GameLift queue, and use the StartGameSessionPlacement API to create new game sessions. In this model, you would switch the fleet registered to the Queue when doing a new deployment. This also allows you to introduce latency-based session placement to multi-region fleets, and use the placement events for receiving the state of game session creation.
Out of these two options, alias is the faster and smaller change to your implementation. You can introduce GameLift queues if you find some of the additional features beneficial.