It may well be impossible to have the maximum number of teams share venues and all play together in round one, sorry I can't help there.
At least if you used the code in the spread sheet you would have a general method of constructing a schedule where at least one pair of teams can share a venue and play together in round 1. In some instances there are two pairs of teams who can share and play in round 1, e.g. 4, 8, 12, 16, etc. teams.
I can appreciate 'the basket of issues' with your algorithm, and I can see that you might even have problems getting back to a useable schedule where everyone plays once per round. The problems will get worse as the number of teams increases. With algorithms like this it is often important to take measures to stop it 'getting stuck', as there can be a short sequence of changes that cause it to loop.
I would also worry about having a balanced sequence of home and away games, as if there is any travelling involved teams may not thank you for having long sequences of away games.