There is no particular issue with the global package variables; as you say, each session will have its own set of values for the global variables (its own "package state").
The potential issue is that 2 sessions may both try to select/update the same ACCOUNT record(s). Session A could select accounts 101, 102 and 103 and update the status to disabled in proc1; then session B could select accounts 103, 104 and 105 and try to update the status to disabled, but it will be blocked by session A which has already locked account 103. Once session A has completed and committed, B can continue. Now, is it right for B to continue process account 103, given that session A just processed it? If it is, fine. If not, then the initial SELECT in proc1 should use FOR UPDATE so that it locks the accounts. This would prevent session B from obtaining a list of accounts to process while session A was working. Once session A finished, session B would be able to start - taking into account any changes made by session A.