I know it is dangerous to make "always" statements, but there are a few that that actually help with BOO.
- The proper batter is always the player that follows the last batter to properly complete his turn at bat (with the caveat that the initial batter for each team doesn't have anyone to follow).
- The previous batter is always considered to have properly completed his time at bat when a pitch is thrown to the following batter. Once such a "legitimizing" pitch is thrown, the current batter is subject to the previous bullet point.
- The player that should have been the proper batter is always the player that is called out when BOO is discovered.
- When BOO is discovered and the player that should have been at bat is called out, the next batter is always the player that follows the player that was just called out.
From there, there are a number of oddities that can occur. A player's turn in the order can be skipped without penalty or a player can come to the plate twice in a row.