1. "Something" has to generate the sequence or GUID. The difference is you can generate GUIDs in the app without the DB.
You can use returning for DB generated GUIDs just like sequences:
create table t (
c1 raw(16) default sys_guid()
);
var id varchar2(32);
insert into t values ( default )
returning c1 into :id;
print :id;
ID
--------------------------------------------------------------------------------
7A2A0B9F05A16600E0530100007FAE6E
2. You could pad the sequence # with a random number. This would make the values "non-guessable". Or have a separate column which stores customer references (generated however you like).
3. It's more of an issue if you're consolidating data from different databases. If you do you can clash on the sequence number.