Technically, it sounds straightforward enough. Legally it could be a nightmare for you, if you plan on carrying all the risk.
I would suggest that a couple of tables can give you what you need here for a basic system
USERS
userid (integer, autoincrement)
username (text)
password (text)
allowed_to_purchase (Y/N)
allowed_to_sell (Y/N)
allowed_to_adimn (Y/N)
...various other fields such as contact info etc
TRANSACTIONS
transactionid (integer, autoincrement)
sellerid (Foreign Key to user table)
buyerid (Foreign Key to user table)
description (text)
value (real)
status (FK to transaction_status table)
TRANSACTION_STATUS
statusid (int)
meaning (enum "Awaiting Payment", "Payment Received by Escrow", "Order despatched", "Order received", "Seller Paid")
This is a very basic data set but sould get your prototype up and running.
Form 1 could allow people to register.
Form 2 could allow an admin to assign buy/sell/admin rights to users
Form 3 could allow a buyer to create an escrow payment
Form 4 could allow an admin to acknowledge receipt of payment
Form 5 could allow a seller to signal dispatch of goods
Form 6 could allow a buyr to acknowledge receipt
Form 7 could allow an admin to release payment for the goods
How's that?