calling the table using any table function that return all entries, does not return the order as it was stored, but rather it seems to return them randomly
Yes, if you need to keep track of things in a particular order (such as the order you added them), you should put them in a list.
Note that you can put the same data in both a list and in a table, if that is what you need for your application.
hence the storing of the table names as symbols in a table
If you want to have a mapping of table names to tables, you can store that in its own table: