Hola:
Normalmente no es necesario usar setAttribute en los campos normales estándar, como el id, y como te he comentado antes, hay navegadores con los que esa forma de crear los controles da problemas (no recuerdo cual, pero yo suelo chequear mis códigos en al menos 5 navegadores), y lo de cambiar el id lo que hago es:
x = document.getElementById("id_").cloneNode(true);
x.id += "x";
document.body.appendChild(x);
Y sobre los eventos, no se trata de atributos, así que para insertarlos, o lo pones directamente, o mejor usas addEventListener/attachEvent.
Saludos