There is no reason to need 2 loops or to alter the query in any way if your are just showing the 9 most recent posts. You can use a loop counter to create the extra divs you need.
<div id="featured">
<?php $count = 0;
if (have_posts()) : while (have_posts()) : the_post();
$count++;
if ( $count < 4 ) { //display of first 3 posts ?>
<div id="featured-<?php echo $count; ?>">
<?php //do stuff here ?>
</div>
<?php }
if ( $count == 4 ) { //closes the featured div adds the links in the center then opens the columns div ?>
</div> <!-- /close the featured div -->
<div id="recent">
<hr>
<ul>
<li>Recent News</li>
<li>View more news...</li>
</ul>
<div id="columns">
<?php }
if ( $count > 3 && $count < 10 ) { //Next 6 posts ?>
<div id="recent-<?php echo $count - 3 ?>">
<?php //do stuff here ?>
</div>
<?php }
endwhile; endif; ?>
</div> <!-- /end columns -->
You need to make sure reading settings are set to show 9 posts per page or create a new wp_query with posts_per_page set to 9.
The $count variable will determine how the post is displayed as WordPress goes through the loop. When $count = 4 we show the extra divs and html you need in the middle of the page.