In reply to bachan21:
This is what the call of item_done() in the driver is doing. It is the indication to the sequencer to generate the next seq_item.
start_item/finish_item creates exactly 1 item. If you need more you have to implement multiple start_item/finish_item.
To make your code easy you could use a loop construct in the body method like this
task body();
repeat (10) begin
req = packet::type_id::create("req");
start_item(req);
void`(randomize() with sel == 1; en == 1; addr inside {20'h0000, 20'h0100};);
finish_item(req);
endtask : body
This generates seq_item with addr in random order.
It looks like your seq_item has data members you do not need, like sel and en. You can set these variables directly in the driver.