Great Work!
I have never coded a bot, so forgive me for pointing out a few minor issues. I could be wrong.
A* is suboptimal for this arena if the heuristic is manhattan distance because some obstacles take longer and are more difficult than others.
Between two paths of the same distance, the bot chooses the same one every time, this is deterministic and not random. (Return all shortest paths with A* (maybe IDA* is better for this) and choose a random one instead of choosing first found shortest path)
(Maybe a better solution is to build a macro table) This would have more optimal pathing better performance.