How to extend Craft.BaseElementIndex for a custom Element Type
Not really an answer to your question but some thoughts..
I've tried your code with my form builder and I noticed two things (the first is really obvious) 


When you overwrite the default init function everything will (of course) break because all the important staff happens there, you can make your calls in the afterInit() function. Craft.js Line 3573

// Give sub-classes a chance to do post-initialization stuff here
this.afterInit();

This function handles the sort for Craft. Craft.js line 2721 link to git

setStoredSortOptionsForSource: function() {
    // Default to whatever's first
    this.setSortAttribute();
    this.setSortDirection('asc');

    var sortAttr = this.getSelectedSourceState('order'),
        sortDir = this.getSelectedSourceState('sort');

    if (!sortAttr) {
        // Get the default
        sortAttr = this.getDefaultSort();

        if (Garnish.isArray(sortAttr)) {
            sortDir = sortAttr[1];
            sortAttr = sortAttr[0];
        }
    }

    if (sortDir !== 'asc' &amp;&amp; sortDir !== 'desc') {
        sortDir = 'asc';
    }

    this.setSortAttribute(sortAttr);
    this.setSortDirection(sortDir);
},


The important part is: var sortAttr = this.getSelectedSourceState('order'), (line 2726) and since sortAttr (at least for me) was never null in my tests - the sortAttr = this.getDefaultSort(); is not triggert. This is because Craft caches the sort order for the user but I don't know how/when this happens. However: when I overwrite line 2729

if (true || !sortAttr) {
    // Get the default
    sortAttr = this.getDefaultSort();

    if (Garnish.isArray(sortAttr)) {
        sortDir = sortAttr[1];
        sortAttr = sortAttr[0];
    }
}



And use 

getDefaultSort: function() {
    return ['dateCreated', 'asc'];
}


I was able to change the default sort. Hope it helps a little bit

Note: this will break the default Craft caching. Normally the default sort options runs only once, after that is keeps the sort order that the user specified. You could overwrite the function for your tests and remove the always true condition when it goes live for a reliable way to get your function triggert.