I found the answer to this question,
the first parameter of the GetSiteProperties method is the index from which the site collection search begins.
I tried the following command spp = tenant.GetSiteProperties (300, true);
which returned site collections from index 300.
So here is my code to get all site collections from sharepoint online
SPOSitePropertiesEnumerable spp = null;
var tenant = new Tenant(ctx);
int startIndex = 0;
while (spp == null || spp.Count > 0)
{
spp = tenant.GetSiteProperties(startIndex, true);
ctx.Load(spp);
ctx.ExecuteQuery();
foreach (SiteProperties sp in spp)
siteCols.Add(new SiteCol(sp.Title, sp.Url));
startIndex += spp.Count;
}
, 10000.