Here's the code I used to extract all the files in the Files Tab manually. I put it in an EnterFrame function to avoid the same problem you see with automatic extraction (runs too fast and uses all the CPU). This will slow down the splash screen animation, but it won't stop it. All you have to do is put the code to start your app (load files etc) in the extractComplete function and you're good to go.

Code:
ssCore.init();
ssDefaults.synchronousCommands = true;

var g_i = -1;
var g_a:Array;

function extractFiles()
{
	
	if (_root.g_i == -1)
	{
		var r:Object = ssCore.Layout.getFileList({format:"TEXT"});
		_root.g_a = r.result.split("\r");
		_root.g_i = 0;
	}
	
	if (_root.g_i != -1)
	{
		if (_root.g_i < _root.g_a.length)
		{
			ssDebug.trace("extracting " + _root.g_a[_root.g_i]);
			ssCore.Layout.extractFile({resource:_root.g_a[_root.g_i], destination:"tempdir://"+_root.g_a[_root.g_i]}, {sync:false, callback:"extractNextFile", scope:_root});
		} 
		else
		{
			_root.extractComplete();
		}
	}
	
}

function extractNextFile()
{
	_root.g_i++;
}

function extractComplete()
{
	delete _root.onEnterFrame;	
	ssCore.Splash.close({});
	ssDebug.trace("all files have been extracted");	
}

extract_btn.onRelease = function()
{
	_root.onEnterFrame = _root.extractFiles;	
}