I don't think you need to re-add the entire context to each scope, you can create a new scope with just the new context information. The parent context will still be included in the log message.
//Existing Context
using var scope1 = _logger.BeginScope(context.ToDictionary());
//New Context
using var scope2 = _logger.BeginScope(new Dictionary<string, object> {{"Foo", bar}});
//Existing Context
using var scope1 = _logger.BeginScope(context.ToDictionary());
//New Context
using var scope2 = _logger.BeginScope(new Dictionary<string, object> {{"Foo", bar}});