We are a not for profit organisation that runs masterclasses & Seminars across Australia. I need an event online registration page that the member selects the venue they want to attend from a list that states Venue, Day, Date, Time
Making a lot of assumptions here ... you could have a single event configured without enabling the location. Then use a priceset with each item in the priceset matching a location - set it to required.
e.g. "Select a Location" Canberra - $75 Melbourne - $75 Darwin - $75
You'll end up with a master list of all registrants, getting a list of registrants by location requires a price set report, either custom or in the Extended Reports extension.
Rather than trying to create one very complicated event in Civi, think of an Event as having two requirements: a place and a date/time. It may also have pricing (or not). Create an event for each class/seminar in each location. Otherwise you can expect to spend lots of time troubleshooting your pricing setup, and will have even more difficulty later when it's time to turn that mess of data into useful reporting or follow-up marketing.
Don't force Civi to be your event listing page by shoe-horning lots of real-life events into one pseudo-event. Instead let your CMS create the listing page, with links to register for the desired event. This could be a simple 15-minute exercise (using Drupal Views), or it could require some code or expense (a custom WordPress page or plugin). But you'll be better off in the end.