The answer you're probably looking for has been applied in programming languages for a long long time now. The basic idea is that in a program you can declare a new variable anywhere, and it is only visible in its scope, unless it is shadowed. So if you declare a new variable inside a for-loop it is only accessible within the for-loop and becomes inaccessible once the for-loop is exited. In the same way you can allow introducing subcontexts with universally quantified variables, in the same way as subcontexts with assumptions, and then require that all variables in the logic system be bound, so that existentially introduced variables are effectively dependent on the containing contexts. This corresponds very naturally to programming languages' for-loops and if-structures respectively.
Example 1
$\def\nn{\mathbb{N}}$
Given any $n \in \nn$:
Let $k = n+1$.
$k > n$.
$\exists m \in \nn\ ( m > n )$.
$\forall n \in \nn\ \exists m \in \nn\ ( m > n )$.
[It is invalid to derive here $\forall n \in \nn\ ( k > n )$, because $k$ is not bound and hence meaningless.]
Example 2
Given any $m,n \in \nn$:
$\forall i \in \nn\ \exists k \in \nn\ ( k > i )$. [from example 1 but renamed]
If $m > n$:
$\exists k \in \nn\ ( k > m )$.
Let $c \in \nn$ such that $c > m$.
$c > n$.
$c > m \land c > n$.
$\exists k \in \nn\ ( k > m \land k > n )$.
If $m \le n$:
$\exists k \in \nn\ ( k > n )$.
Let $c \in \nn$ such that $c > n$. [Note that this $c$ is unrelated to the earlier $c$.]
$c > m$.
$c > m \land c > n$.
$\exists k \in \nn\ ( k > m \land k > n )$.
$\exists k \in \nn\ ( k > m \land k > n )$.
$\forall m,n \in \nn\ \exists k \in \nn\ ( k > m \land k > n )$.
See this post for more precise description of the rules used in this system. (Of course many others have invented; see this pdf for a brief comparison.) The program-style presentation of this system makes it quite easy to see that the rules are sound, and makes it natural to use. But the existential elimination rule does make it tricky to convert it to a sequent-style logic system.
Note that some variants of logic systems, especially Hilbert-style systems, have variable shadowing. In practice we should avoid it because it is just confusing.