Mira, el tema es un poco complicado pero no imposible, lo que tienes que hacer es: cada vez que quieras agregar una fila nueva, crea un nuevo datatable y agregale las filas que habian en el datatable, y luego agregas la que has seleccionado
osea:
Dim dt As DataTable = DataGridView1.DataSource
Dim data As New DataTable
Dim drc As DataRowCollection
Dim row As DataRow
Dim datatab As DataTable = DataGridView1.DataSource
'aqui agrego las columnas al nuevo datatable:
data.Columns.Add(New DataColumn("elnombre de columna", getType(String)))
data.Columns.Add(New DataColumn("elnombre de columna", getType(String)))
data.Columns.Add(New DataColumn("elnombre de columna", getType(String)))
data.Columns.Add(New DataColumn("elnombre de columna", getType(String)))
data.Columns.Add(New DataColumn("elnombre de columna", getType(String)))
'aqui referencio la coleccion de datos del gridview a la variable drc para 'acceder a los datos
drc = dt.Rows
'recorro todos los campos y los guardo
For i As Integer = 0 To drc.Count - 1
row = data.NewRow
row(0) = drc.Item(i).Item(0)
row(1) = drc.Item(i).Item(1)
row(2) = drc.Item(i).Item(2)
row(3) = drc.Item(i).Item(3)
row(4) = drc.Item(i).Item(4)
row(5) = drc.Item(i).Item(5)
data.Rows.Add(row)
Next
hasta ahi has "clonado" el datatable entonces ahora te queda agregar la fila que se ha seleccionado
row = data.NewRow
row(0) = 'parametros de la otra fila
row(1) = 'parametros de la otra fila
row(2) = 'parametros de la otra fila
row(3) = 'parametros de la otra fila
row(4) = 'parametros de la otra fila
row(5) = 'parametros de la otra fila
data.Rows.Add(row)
DataGridView1.DataSource = data
y hasta ahi eso sería todo, si no te quedo claro algo, pues comentamelo y trataré de darte una mano