だいたい以下のような感じでうまくいくんじゃないかと思うけど、ちゃんとした検証はしてないので。WebKitでしかみてませんし。
引数のtargetはwindowやdocument, scriptはsrcが設定されたscript elementだと思いねえ。
(※イベントハンドラ内でevt.targetとかを参照するようなヤツはこれだとダメです)
function hijackDOMLoaded(target, script) { var orig = target.addEventListener, callbacks = []; target.addEventListener = function(type, cb, useCapture) { if ( type === "DOMContentLoaded" ) { callbacks.push(cb); } else { orig.call(target, type, cb, useCapture); } }; script.onload = function() { target.addEventListener = orig; callbacks.forEach(function(cb) { cb(); }); }; document.body.appendChild(script); }