This should formalize Koen S's answer: which fully answers Q2.
Stage 1: Every bot scans to see if they are the "lowerleftmost" bot; the bot which satisfies that condition calls itself Alice. Of the remaining bots, each bot on the left end of its row calls itself Bill, and if a bot is not the left-most one on its row it calls itself Carl.
Stage 2: Alice moves down once, and then left until there are no bots to her left, nor directly above. Alice moves left once more for good measure. (Note: If there was another bot on the same initial row as Alice, the left-most one changes its name from Carl to Bill.)
Stage 3: Whenever Alice is on an empty row, she moves up one row (unless there are no bots on rows above her). If Bill sees Alice move onto his row, he moves down once on the next turn. If Carl sees the bot directly to his left (on the same row) move down, he moves down on the next turn.
This allows Alice to count how many bots there are, on each row, and in which positions. Each bot, one by one, simply moves down one square.
Stage 4: If Alice is on a row with no other bots (but at least one bot on a row below her) she moves down. If she is on a row with other bots, she communicates with the left-most bot. She does this by left-right movements (which allow her to encode the information in binary). She communicates where that bot should move into a square (far above the original configuration). After she tells the bot where to go, she waits until that bot will have gotten into position, and then communicates with the next bot on the row, moves down, or (at the very end) takes her own position in the final square.

