Your 2nd screen structure definition is wrong. You can define a row in either of the following formats:
$structure['main']['fields'][5] = array('list1'=>'list1');
or:
$structure['main']['fields'][5][] = array('label'=>'list1');
$structure['main']['fields'][5][] = array('field'=>'list1');
Notice that in the 2nd option the label and the field MUST appear in the same row otherwise they cannot be associated with each other.
Another point to note is that both the replaceScreenColumns() and replaceScreenHeadings() functions were designed to work in a horizontal (list) display, not a vertical (detail) display.