If you want to prefent the player from upgrading the various townsquare buildings and you don't want to have silly buildings with costs of 999999, then I would suggest the following:
Code:
building hinterland_town_square ;You have to add "hinterland_" to make it indestructable, right?
{
levels town_square aetolian_league_agora rhodian_agora ; etc
{
town_square requires building_present town_square town_square
{
; Blah... Capalities and whatever more goes here
}
}
{
aetolian_league_agora requires building_present town_square aetolian_league_agora
{
; Blah... Capalities and whatever more goes here
}
}
{
rhodian_agora requires building_present town_square rhodian_agora
{
; Blah... Capalities and whatever more goes here
}
}
}
As you can see, the buildings require themselves in order to be upgraded... ie. When that building doesn't exist already, it can't be build 
Another option is:
Code:
hidden_resources disabled ; <= Important change
building hinterland_town_square
{
levels town_square aetolian_league_agora rhodian_agora ; etc
{
town_square requires hidden_resource disabled ; <= Important change
{
; Blah... Capalities and whatever more goes here
}
}
{
aetolian_league_agora requires hidden_resource disabled ; <= Important change
{
; Blah... Capalities and whatever more goes here
}
}
{
rhodian_agora requires hidden_resource disabled ; <= Important change
{
; Blah... Capalities and whatever more goes here
}
}
}
The main idea is that you add another hidden_resource (HR) called "disabled" to the HR-line. This resource will NOT be added to any region. Since the building can only be build in regions where the HR "disabled" is, it can't be build anywhere 
EDIT:
I said above:
Code:
requires building_present town_square level_X
But I'm no sure if it maybe should be:
Code:
requires building_present hinterland_town_square level_X
Since this is also added to the tree name... 
Do you maybe now this? I'm not very familiar with indestructable buildings...