Per il primo problema dovresti usare un immagine al posto di cambiare lo sfondo del body e gestirne la posizione con un pò di css.

Per il secondo problema basta levare la seconda funzione.

codice:
<html>
    <head>
    <script type='text/javascript'>
           function applicasfondo(){
                var imgdest = document.getElementById('sfondo');
                var imgurls = [{percorso:'a.jpg', larghezza:'1024'}, {percorso:'b.jpg', larghezza:'1024'}, {percorso:'c.jpg', larghezza:'1024'}, {percorso:'d.jpg', larghezza:'1024'}, {percorso:'e.jpg', larghezza:'1024'}];
                var randomindex = Math.floor(Math.random()*(imgurls.length-1));
                var offset = imgurls[randomindex].larghezza * (-0.5);
                imgdest.style.marginLeft = offset+'px';
                imgdest.src = imgurls[randomindex].percorso; 
                //setTimeout('applicasfondo()', 4000);
            }
    </script>
    </head>
    <body onload='applicasfondo()'>
        [img][/img]
    </body>
</html>

Come configurare il tutto?

In questa riga:
var imgurls = [{percorso:'a.jpg', larghezza:'1024'}, {percorso:'b.jpg', larghezza:'1024'}, {percorso:'c.jpg', larghezza:'1024'}, {percorso:'d.jpg', larghezza:'1024'}]

Metti gli effettivi percorsi e le effettive larghezze in pixel delle immagini.

Se ad esempio hai le immagini foto/Alba.jpg larga 1000px e immagini/Tramonto.png larga 1251px, dovresti fare così:

var imgurls = [{percorso:'foto/Alba.jpg', larghezza:'1000'}, {percorso:'immagini/Tramonto.png', larghezza:'1251'}]

Se vuoi ripristinare il cambio immagine a intervalli regolari cambia qesta riga:
//setTimeout('applicasfondo()', 4000);
in:
setTimeout('applicasfondo()', 4000);

Se vuoi variare la dimensione dell'intervallo sostituisci a 4000(4 secondi) il numero che vuoi (sempre in millisecondi).