In a tile-based game with a world of 200x200 there may be up to 1000+ walls; each consuming a small tile. These wall bodys are just static square bodies; however I have found that the performance drops significantly with worlds with walls.

Are there any optimisation steps I can take here, other than combining adjacent walls into one polygone (which I may end up doing.)?

Correct. You should reduce the number of bodies in the scene as much as possible.

To that end, there are a number of ways to do that, the first by combining adjacent convex shapes into a single convex or body.

The next step would be to ask yourself if you need all the bodies in the world at the same time. For example, an old school platformer game really only needs to simulate the immediate vicinity of the player. Another option might be to split the simulation into separately simulated regions.